Aracılığıyla paylaş


Üçgen Listeler

Üçgen listesi, yalıtılmış üçgenlerin listesidir. Birbirlerine yakın olabilirler veya olmayabilirler. Üçgen listede en az üç köşe olmalı ve toplam köşe sayısı üçe bölünmelidir.

Kopuk parçalardan oluşan bir nesne oluşturmak için üçgen listeleri kullanın. Örneğin, bir 3B oyunda güç alanı duvarı oluşturmanın bir yolu, küçük, bağlantısız üçgenlerin büyük bir listesini belirtmektir. Ardından, üçgen listesine ışık yaymak için görünen bir malzeme ve doku uygulayın. Duvardaki her üçgen parlıyor gibi görünüyor. Bir oyuncunun kuvvet alanına bakarken bekleyebilecekleri gibi duvarın arkasındaki sahne üçgenler arasındaki boşluklardan kısmen görünür hale gelir.

Üçgen listeler keskin kenarları olan ve Gouraud gölgelendirmesi ile gölgelendirilmiş ilkel öğeler oluşturmak için de kullanışlıdır. Bkz. Yüz ve Köşe Normal Vektörleri (Direct3D 9).

Aşağıdaki çizimde işlenmiş üçgen liste gösterilmektedir.

İşlenmiş üçgen listeçizimi

Aşağıdaki kodda bu üçgen listesi için köşelerin nasıl oluşturulacağı gösterilmektedir.

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}

};

Aşağıdaki kod örneğinde, IDirect3DDevice9::D rawPrimitivekullanılarak Direct3D 9'da bu üçgen listenin nasıl işlenmeleri gösterilmektedir.

//
// It is assumed that d3dDevice is a valid
// pointer to a IDirect3DDevice9 interface.
//
d3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );

Ayrıca, birbirine bağlı olmayan üçgenleri işlemek için üçgen şeritler de kullanabilirsiniz. Bunu yapmak için, listede bozuk bir üçgen (yani sıfır boyutlu bir üçgen) belirtin; bu, işleme sırasında görünmeyen iki üçgen arasında bir çizgi oluşturur. Örneğin, önceki örnekten yalnızca ilk ve son üçgeni işlemek için köşe arabelleği aşağıdaki köşelerle başlatın:

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

Temel Öğeler