Objek Geometry-Shader
Objek geometri-shader memproses seluruh primitif. Gunakan sintaks berikut untuk mendeklarasikan objek geometry-shader.
[maxvertexcount(NumVerts)] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject );
Parameter
-
[maxvertexcount(NumVerts)]
-
[in] Deklarasi untuk jumlah maksimum simpul yang akan dibuat.
- [maxvertexcount()] - kata kunci yang diperlukan; tanda kurung dan karakter yang diperlukan untuk sintaksis yang benar.
- NumVerts - Bilangan bulat yang menunjukkan jumlah simpul.
-
ShaderName
-
[in] String ASCII yang berisi nama unik untuk fungsi geometry-shader.
-
PrimitiveType DataType Name [ NumElements ]
-
PrimitiveType - Jenis primitif, yang menentukan urutan data primitif.
Jenis Primitif Deskripsi Titik Daftar titik Baris Daftar garis atau garis segitiga Daftar segitiga atau strip segitiga lineadj Daftar garis dengan bersebelahan atau garis garis dengan bersebelahan triangleadj Daftar segitiga dengan strip segitiga atau segitiga dengan ketersingkatan DataType - [in] Jenis data input; dapat berupa jenis data HLSL apa pun.
Nama - Nama argumen; ini adalah string ASCII.
NumElements - Ukuran array input, yang bergantung pada PrimitiveType seperti yang ditunjukkan dalam tabel berikut.
Jenis Primitif NumElements Titik [1]
Anda hanya beroperasi pada satu titik pada satu waktu.Baris [2]
Garis membutuhkan dua simpul.segitiga [3]
Segitiga membutuhkan tiga simpul.lineadj [4]
Lineadj memiliki dua ujung; oleh karena itu, dibutuhkan empat simpul.triangleadj [6]
Segitiga berbatasan dengan tiga segitiga lagi; oleh karena itu, dibutuhkan enam simpul. -
StreamOutputObject
-
Deklarasi objek stream-output.
Tampilkan Nilai
Tidak ada
Keterangan
Diagram berikut menunjukkan berbagai jenis primitif untuk objek shader geometri.
Diagram berikut menunjukkan pemanggilan shader geometri.
Contoh
Contoh ini berasal dari latihan 1 dari Lokakarya Direct3D 10 Shader Model 4.0.
[maxvertexcount(3)]
void GSScene( triangleadj GSSceneIn input[6], inout TriangleStream<PSSceneIn> OutputStream )
{
PSSceneIn output = (PSSceneIn)0;
for( uint i=0; i<6; i+=2 )
{
output.Pos = input[i].Pos;
output.Norm = input[i].Norm;
output.Tex = input[i].Tex;
OutputStream.Append( output );
}
OutputStream.RestartStrip();
}
Minimum Shader Model
Objek ini didukung dalam model shader berikut.
Shader Model | Didukung |
---|---|
Model Shader 4 dan model shader yang lebih tinggi | ya |
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk