Cara: Menginisialisasi Tahap Tessellator

Secara umum, tessellation memperluas model patch yang ringkas dan ditentukan pengguna menjadi geometri yang berisi sejumlah detail yang dapat diprogram. Geometri biasanya merupakan sekumpulan segitiga yang mewakili geometri permukaan terperinci. Topik ini menunjukkan cara menginisialisasi tahap tessellator.

Tahap tessellator adalah tahap kedua dari tiga tahap yang bekerja sama untuk tessellate atau ubin permukaan. Tahap pertama adalah tahap hull-shader; ini beroperasi sekali per patch dan mengonfigurasi bagaimana tahap berikutnya (tesselator fungsi tetap) berperilaku. Shader lambung juga menghasilkan output yang ditentukan pengguna seperti titik kontrol output dan konstanta patch yang dikirim melewati tesselator langsung ke tahap ketiga, tahap domain-shader. Shader domain dipanggil sekali per titik tahap tessellator dan mengevaluasi posisi permukaan.

Tahap tessellator adalah tahap fungsi tetap, tidak ada shader untuk dihasilkan, dan tidak ada status untuk diatur. Ini menerima semua status pengaturannya dari tahap hull-shader; setelah tahap hull-shader diinisialisasi, tahap tessellator secara otomatis diinisialisasi.

Untuk menginisialisasi tahap tessellator

  • Inisialisasi tahap hull-shader menggunakan ID3D11DeviceContext::HSSetShader.

    void HSSetShader(
      ID3D11HullShader *pHullShader,  
      ID3D11ClassInstance *const *ppClassInstances,
      UINT NumClassInstances
    );
    

    ppClassInstances adalah penunjuk ke array antarmuka shader, yang diwakili oleh pointer ID3D11ClassInstance dan jumlah antarmuka, yang diwakili oleh NumClassInstances. Jika tidak digunakan, parameter ini masing-masing dapat diatur ke NULL dan 0.

Setelah tahap hull-shader diinisialisasi, Anda juga harus menginisialisasi tahap domain-shader.

Cara Menggunakan Direct3D 11

Gambaran Umum Tessellation