Поделиться через


Треугольные вентиляторы (Direct3D 9)

Веер треугольника похож на треугольную полосу, за исключением того, что все треугольники имеют одну вершину, как показано на следующем рисунке.

Иллюстрация треугольника вентилятора

Система использует вершины v2, v3 и v1 для рисования первого треугольника; v3, v4 и v1 для рисования второго треугольника; v4, v5 и v1 для рисования третьего треугольника; и так далее. Если включена плоская заливка, система затеняет треугольник цветом от его первой вершины.

На следующем рисунке показан отрисованный треугольный вентилятор.

иллюстрация отрисованного треугольника вентилятора

В следующем коде показано, как создать вершины для этого вентилятора треугольника.

struct CUSTOMVERTEX
{
    float x,y,z;
};

CUSTOMVERTEX Vertices[] = 
{
    { 0.0, 0.0, 0.0},
    {-5.0, 5.0, 0.0},
    {-3.0,  7.0, 0.0},
    { 0.0, 10.0, 0.0},
    { 3.0,  7.0, 0.0},
    { 5.0,  5.0, 0.0},
};

В приведенном ниже примере кода показано, как отобразить этот треугольник в Direct3D 9 с помощью IDirect3DDevice9::D rawPrimitive.

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

Вентиляторы треугольников не поддерживаются в Direct3D 10 или более поздней версии.

Примитивы