Daftar Segitiga
Daftar segitiga adalah daftar segitiga terisolasi. Mereka mungkin atau mungkin tidak ber dekat satu sama lain. Daftar segitiga harus memiliki setidaknya tiga simpul dan jumlah total simpul harus dapat dibagi tiga.
Gunakan daftar segitiga untuk membuat objek yang terdiri dari potongan yang terputus-putus. Misalnya, salah satu cara untuk membuat dinding bidang paksa dalam game 3D adalah dengan menentukan daftar besar segitiga kecil yang tidak terhubung. Kemudian terapkan bahan dan tekstur yang tampak memancarkan cahaya ke daftar segitiga. Setiap segitiga di dinding tampak bersinar. Adegan di belakang dinding menjadi terlihat sebagian melalui celah di antara segitiga, seperti yang mungkin diharapkan pemain saat melihat medan paksa.
Daftar segitiga juga berguna untuk menciptakan primitif yang memiliki tepi tajam dan dibayangi dengan bayangan Gouraud. Lihat Vektor Normal Wajah dan Puncak (Direct3D 9).
Ilustrasi berikut menggambarkan daftar segitiga yang dirender.
Kode berikut menunjukkan cara membuat simpul untuk daftar segitiga ini.
struct CUSTOMVERTEX
{
float x,y,z;
};
CUSTOMVERTEX Vertices[] =
{
{-5.0, -5.0, 0.0},
{ 0.0, 5.0, 0.0},
{ 5.0, -5.0, 0.0},
{10.0, 5.0, 0.0},
{15.0, -5.0, 0.0},
{20.0, 5.0, 0.0}
};
Contoh kode di bawah ini menunjukkan cara merender daftar segitiga ini di Direct3D 9 menggunakan IDirect3DDevice9::D rawPrimitive.
//
// It is assumed that d3dDevice is a valid
// pointer to a IDirect3DDevice9 interface.
//
d3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );
Anda juga dapat menggunakan strip segitiga untuk merender segitiga yang tidak terhubung satu sama lain. Untuk melakukan ini, tentukan segitiga degenerasi (yaitu, segitiga dengan ukuran nol) dalam daftar; ini akan membuat garis antara dua segitiga yang tidak akan muncul selama penyajian. Misalnya, untuk merender hanya segitiga pertama dan terakhir dari contoh sebelumnya, inisialisasi buffer vertex dengan simpul berikut:
CUSTOMVERTEX Vertices[] =
{
{-5.0, -5.0, 0.0},
{ 0.0, 5.0, 0.0},
{ 5.0, -5.0, 0.0},
{ 5.0, -5.0, 0.0}, // degenerate triangle
{10.0, 5.0, 0.0}, // degenerate triangle
{10.0, 5.0, 0.0},
{15.0, -5.0, 0.0},
{20.0, 5.0, 0.0}
};
Topik terkait