다음을 통해 공유


삼각형 스트립

삼각형 스트립은 일련의 연결된 삼각형입니다. 삼각형이 연결되었기 때문에 애플리케이션에서 각 삼각형의 세 꼭짓점을 반복해서 지정할 필요가 없습니다. 예를 들어 다음 삼각형 스트립을 정의하려면 꼭짓점 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}
};

Primitives