Cara: Membuat Shader Domain

Shader domain adalah yang ketiga dari tiga tahap yang bekerja sama untuk menerapkan tessellation. Input untuk tahap domain-shader berasal dari shader lambung. Topik ini memperlihatkan cara membuat shader domain.

Shader domain mengubah geometri permukaan (dibuat oleh tahap tessellator fungsi tetap) menggunakan titik kontrol output shader lambung, data konstanta patch output shader lambung, dan satu set koordinat uv tessellator.

Untuk membuat shader domain

  1. Mendesain shader domain. Lihat Cara: Mendesain Shader Domain.

  2. Kompilasi kode shader.

  3. Buat objek domain-shader menggunakan ID3D11Device::CreateDomainShader.

    HRESULT CreateDomainShader(
      const void *pShaderBytecode, // 
      SIZE_T BytecodeLength, // 
      ID3D11ClassLinkage *pClassLinkage, // 
      ID3D11DomainShader **ppDomainShader
    );
    
  4. Inisialisasi tahap alur menggunakan ID3D11DeviceContext::D SSetShader.

    void DSSetShader(
      ID3D11DomainShader *pDomainShader, // 
      ID3D11ClassInstance *const *ppClassInstances,
      UINT NumClassInstances
    );
    

Shader domain harus terikat ke alur jika shader lambung terikat. Secara khusus, tidak valid untuk langsung mengalirkan titik kontrol shader lambung dengan shader geometri.

Cara Menggunakan Direct3D 11

Gambaran Umum Tessellation