Bagikan melalui


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.

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

Lihat juga

ID3D11Device