Bagikan melalui


Strip Segitiga

Strip segitiga adalah serangkaian segitiga yang terhubung. Karena segitiga terhubung, aplikasi tidak perlu berulang kali menentukan ketiga simpul untuk setiap segitiga. Misalnya, Anda hanya perlu tujuh simpul untuk menentukan strip segitiga berikut.

ilustrasi strip segitiga dengan tujuh simpul

Sistem ini menggunakan simpul v1, v2, dan v3 untuk menggambar segitiga pertama; v2, v4, dan v3 untuk menggambar segitiga kedua; v3, v4, dan v5 untuk menggambar yang ketiga; v4, v6, dan v5 untuk menggambar keempat; dan sebagainya. Perhatikan bahwa puncak segitiga kedua dan keempat tidak berurutan; ini diperlukan untuk memastikan bahwa semua segitiga digambar dalam orientasi searah jajar.

Sebagian besar objek dalam adegan 3D terdiri dari strip segitiga. Ini karena strip segitiga dapat digunakan untuk menentukan objek kompleks dengan cara yang membuat penggunaan memori dan waktu pemrosesan yang efisien.

Ilustrasi berikut menggambarkan strip segitiga yang dirender.

ilustrasi strip segitiga yang dirender

Kode berikut menunjukkan cara membuat simpul untuk strip 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 strip 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_TRIANGLESTRIP, 0, 4);

Gunakan strip segitiga untuk merender segitiga yang tidak terhubung satu sama lain. Untuk melakukan ini, tentukan segitiga degenerasi (yaitu, segitiga yang areanya nol) dalam daftar segitiga. Ini menciptakan garis antara dua segitiga yang tidak akan dirender. Untuk merender hanya segitiga pertama dan terakhir dari contoh sebelumnya, ubah buffer vertex seperti yang ditunjukkan di sini:

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}
};

Primitif