ID3D11Device::CreateGeometryShader method (d3d11.h)
Buat shader geometri.
Sintaks
HRESULT CreateGeometryShader(
[in] const void *pShaderBytecode,
[in] SIZE_T BytecodeLength,
[in, optional] ID3D11ClassLinkage *pClassLinkage,
[out, optional] ID3D11GeometryShader **ppGeometryShader
);
Parameter
[in] pShaderBytecode
Jenis: const void*
Penunjuk ke shader yang dikompilasi.
[in] BytecodeLength
Jenis: SIZE_T
Ukuran shader geometri yang dikompilasi.
[in, optional] pClassLinkage
Jenis: ID3D11ClassLinkage*
Penunjuk ke antarmuka tautan kelas (lihat ID3D11ClassLinkage); nilainya bisa NULL.
[out, optional] ppGeometryShader
Jenis: ID3D11GeometryShader**
Alamat penunjuk ke antarmuka ID3D11GeometryShader . Jika ini NULL, semua parameter lain akan divalidasi, dan jika semua parameter lulus validasi API ini akan mengembalikan S_FALSE alih-alih S_OK.
Mengembalikan nilai
Jenis: HRESULT
Metode ini mengembalikan salah satu Kode Pengembalian Direct3D 11 berikut.
Keterangan
Setelah dibuat, shader dapat diatur ke perangkat dengan memanggil ID3D11DeviceContext::GSSetShader.
Runtime Direct3D 11.1, yang tersedia dimulai dengan Windows 8, menyediakan fungsionalitas baru berikut untuk CreateGeometryShader.
Instruksi model shader 5.0 berikut tersedia hanya untuk shader piksel dan shader komputasi dalam runtime Direct3D 11.0. Untuk runtime Direct3D 11.1, karena tampilan akses tidak berurutan (UAV) tersedia di semua tahap shader, Anda dapat menggunakan instruksi ini di semua tahap shader.
Oleh karena itu, jika Anda menggunakan instruksi model shader 5.0 berikut dalam shader geometri, Anda dapat berhasil meneruskan shader geometri yang dikompilasi ke pShaderBytecode. Artinya, panggilan ke CreateGeometryShader berhasil.
Jika Anda meneruskan shader yang dikompilasi ke pShaderBytecode yang menggunakan salah satu instruksi berikut pada perangkat yang tidak mendukung UAV di setiap tahap shader (termasuk driver yang ada yang tidak diimplementasikan untuk mendukung UAV di setiap tahap shader), CreateGeometryShader gagal. CreateGeometryShader juga gagal jika shader mencoba menggunakan slot UAV di luar set slot UAV yang didukung perangkat keras.
- dcl_uav_typed
- dcl_uav_raw
- dcl_uav_structured
- ld_raw
- ld_structured
- ld_uav_typed
- store_raw
- store_structured
- store_uav_typed
- sync_uglobal
- Semua atomik dan atom langsung (misalnya, atomic_and dan imm_atomic_and)
Contoh
Contoh Penggunaan
ID3D11GeometryShader* g_pGeometryShader11 = NULL;
ID3DBlob* pGeometryShaderBuffer = NULL;
ID3DBlob * errorbuffer = NULL;
D3DX11CompileFromFile( str, NULL, NULL, "GS", "gs_4_0", dwShaderFlags, 0, NULL,
&pGeometryShaderBuffer, &errorbuffer, NULL );
pd3dDevice->CreateGeometryShader( pGeometryShaderBuffer->GetBufferPointer(),
pGeometryShaderBuffer->GetBufferSize(), NULL, &g_pGeometryShader11 );
Persyaratan
Target Platform | Windows |
Header | d3d11.h |
Pustaka | D3D11.lib |