Üçgen Şeritler
Üçgen şerit, bağlı üçgenlerden oluşan bir dizidir. Üçgenler bağlı olduğundan, uygulamanın her üçgen için üç köşeyi de tekrar tekrar belirtmesi gerekmez. Örneğin, aşağıdaki üçgen şeridi tanımlamak için yalnızca yedi köşeye ihtiyacınız vardır.
yedi köşeli üçgen şeridin
Sistem ilk üçgeni çizmek için v1, v2 ve v3 köşelerini kullanır; İkinci üçgeni çizmek için v2, v4 ve v3; Üçüncü çizim için v3, v4 ve v5; v4, v6 ve v5'in dördüncü çizimini yapmak için; ve benzeri. İkinci ve dördüncü üçgenlerin köşelerinin sıra dışı olduğuna dikkat edin; bu, tüm üçgenlerin saat yönünde çizildiğinden emin olmak için gereklidir.
3B sahnelerdeki nesnelerin çoğu üçgen şeritlerden oluşur. Bunun nedeni, karmaşık nesneleri bellek ve işleme süresini verimli bir şekilde belirtmek için üçgen şeritlerin kullanılabilmesidir.
Aşağıdaki çizimde işlenmiş üçgen şerit gösterilmektedir.
İşlenmiş üçgen şeritçizimi
Aşağıdaki kodda bu üçgen şerit 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 şeridin nasıl işlenme şekli gösterilmektedir.
//
// It is assumed that d3dDevice is a valid
// pointer to a IDirect3DDevice9 interface.
//
d3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 4);
Birbirine bağlı olmayan üçgenleri işlemek için üçgen şerit kullanın. Bunu yapmak için, üçgen listesinde bozuk bir üçgen (alanı sıfır olan bir üçgen) belirtin. Bu, iki üçgen arasında işlenmeyecek bir çizgi oluşturur. Önceki örnekten yalnızca ilk ve son üçgenleri işlemek için burada gösterildiği gibi köşe arabelleğinde değişiklik yapı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}
};
İlgili konular