다음을 통해 공유


삼각형 스트립

삼각형 스트립은 일련의 연결된 삼각형입니다. 삼각형이 연결되어 있으므로 애플리케이션은 각 삼각형에 대해 세 개의 꼭짓점을 모두 반복적으로 지정할 필요가 없습니다. 예를 들어 다음 삼각형 스트립을 정의하려면 꼭짓점이 7개만 필요합니다.

7개의 꼭짓점이그림

시스템은 꼭짓점 v1, v2 및 v3을 사용하여 첫 번째 삼각형을 그립니다. v2, v4 및 v3을 사용하여 두 번째 삼각형을 그립니다. v3, v4 및 v5를 사용하여 세 번째 그림을 그립니다. v4, v6 및 v5를 사용하여 네 번째 그림을 그립니다. 등등. 두 번째 및 네 번째 삼각형의 꼭짓점은 순서가 다릅니다. 이는 모든 삼각형이 시계 방향으로 그려지도록 하는 데 필요합니다.

3D 장면의 대부분의 개체는 삼각형 스트립으로 구성됩니다. 이는 삼각형 스트립을 사용하여 메모리 및 처리 시간을 효율적으로 사용하는 방식으로 복잡한 개체를 지정할 수 있기 때문입니다.

다음 그림에서는 렌더링된 삼각형 스트립을 보여 줍니다.

렌더링된 삼각형 스트립그림

다음 코드는 이 삼각형 스트립에 대한 꼭짓점을 만드는 방법을 보여줍니다.

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

아래 코드 예제에서는 IDirect3DDevice9::D rawPrimitive사용하여 Direct3D 9에서 이 삼각형 스트립을 렌더링하는 방법을 보여줍니다.

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

삼각형 스트립을 사용하여 서로 연결되지 않은 삼각형을 렌더링합니다. 이렇게 하려면 삼각형 목록에서 퇴행성 삼각형(영역이 0인 삼각형)을 지정합니다. 그러면 렌더링되지 않는 두 삼각형 사이에 선이 만들어집니다. 이전 예제의 첫 번째 및 마지막 삼각형만 렌더링하려면 다음과 같이 꼭짓점 버퍼를 수정합니다.

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

기본 형식