Tiras de triángulos
Una franja de triángulos es una serie de triángulos conectados. Dado que los triángulos están conectados, la aplicación no necesita especificar repetidamente los tres vértices para cada triángulo. Por ejemplo, solo necesita siete vértices para definir la siguiente franja de triángulos.
El sistema usa v1 v1, v2 y v3 para dibujar el primer triángulo; v2, v4 y v3 para dibujar el segundo triángulo; v3, v4 y v5 para dibujar la tercera; v4, v6 y v5 para dibujar el cuarto; y así sucesivamente. Observe que los vértices de los triángulos segundo y cuarto están desordenados; esto es necesario para asegurarse de que todos los triángulos se dibujan en una orientación en el sentido de las agujas del reloj.
La mayoría de los objetos de las escenas 3D se componen de franjas de triángulos. Esto se debe a que las franjas de triángulos se pueden usar para especificar objetos complejos de una manera que hace un uso eficaz de la memoria y el tiempo de procesamiento.
En la ilustración siguiente se muestra una franja de triángulos representada.
En el código siguiente se muestra cómo crear vértices para esta franja de triángulos.
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}
};
En el ejemplo de código siguiente se muestra cómo representar esta franja de triángulos en Direct3D 9 con IDirect3DDevice9::D rawPrimitive.
//
// It is assumed that d3dDevice is a valid
// pointer to a IDirect3DDevice9 interface.
//
d3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 4);
Use una franja de triángulos para representar triángulos que no están conectados entre sí. Para ello, especifique un triángulo degenerado (es decir, un triángulo cuyo área es cero) en la lista de triángulos. Esto crea una línea entre los dos triángulos que no se representarán. Para representar solo los triángulos primero y último del ejemplo anterior, modifique el búfer de vértices como se muestra aquí:
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}
};
Temas relacionados