DirectX SDK

Line Lists

A line list is a list of isolated, straight line segments. Line lists are useful for such tasks as adding sleet or heavy rain to a 3-D scene. Applications create a line list by filling an array of vertices. The number of vertices in a line list must be greater than or equal to two, and it must be even.

[C++]

The following code fragment illustrates how this task is accomplished from C++:

const DWORD TOTAL_VERTS=6;
D3DVERTEX lpVerts[TOTAL_VERTS];
 
lpVerts[0] = D3DVERTEX(D3DVECTOR(-5,-5,0),D3DVECTOR(0,0,-1),0,0);
lpVerts[1] = D3DVERTEX(D3DVECTOR(0,5,0),D3DVECTOR(0,0,-1),0,0);
lpVerts[2] = D3DVERTEX(D3DVECTOR(5,-5,0),D3DVECTOR(0,0,-1),0,0);
lpVerts[3] = D3DVERTEX(D3DVECTOR(10,5,0),D3DVECTOR(0,0,-1),0,0);
lpVerts[4] = D3DVERTEX(D3DVECTOR(15,-5,0),D3DVECTOR(0,0,-1),0,0);
lpVerts[5] = D3DVERTEX(D3DVECTOR(20,5,0),D3DVECTOR(0,0,-1),0,0);
 

Render the line list using the IDirect3DDevice7::DrawPrimitive method. The following code fragment illustrates the use of IDirect3DDevice7::DrawPrimitive for drawing the line list in the preceding example. Remember that all calls to IDirect3DDevice7::DrawPrimitive must occur between IDirect3DDevice7::BeginScene and IDirect3DDevice7::EndScene.

HRESULT hResult;
// This code fragment assumes that lpDirect3DDevice is a valid 
// pointer to an IDirect3DDevice7 interface.
hResult = 
    lpDirect3DDevice->DrawPrimitive(D3DPT_LINELIST,
                                      D3DFVF_VERTEX,
                                      lpVerts,
                                      TOTAL_VERTS,
                                      D3DDP_WAIT); 
[Visual Basic]

A Visual Basic application could fill the array as shown in the following code fragment:

' This code fragment assumes that dx is a valid reference
' to a DirectX7 object.
On Local Error Resume Next
Const TOTAL_VERTS As Integer = 6
Dim Verts(TOTAL_VERTS) As D3DVERTEX
 
Verts(0) = dx.CreateD3DVertex(-5, -5, 0, 0, 0, -1, 0, 0)
Verts(1) = dx.CreateD3DVertex(0, 5, 0, 0, 0, -1, 0, 0)
Verts(2) = dx.CreateD3DVertex(5, -5, 0, 0, 0, -1, 0, 0)
Verts(3) = dx.CreateD3DVertex(10, 5, 0, 0, 0, -1, 0, 0)
Verts(4) = dx.CreateD3DVertex(15, -5, 0, 0, 0, -1, 0, 0)
Verts(5) = dx.CreateD3DVertex(20, 5, 0, 0, 0, -1, 0, 0)

Render the point list using the Direct3DDevice7.DrawPrimitive method. The following code fragment illustrates the use of Direct3DDevice7.DrawPrimitive for drawing the line list in the preceding example. All calls to Direct3DDevice7.DrawPrimitive must occur between Direct3DDevice7.BeginScene and Direct3DDevice7.EndScene.

' This code fragment assumes that d3ddev is a valid
' reference to an Direct3DDevice7 object.
Call d3ddev.DrawPrimitive(D3DPT_LINELIST, _ 
                          D3DFVF_VERTEX, _ 
                          Verts(0), _ 
                          TOTAL_VERTS, _ 
                          D3DDP_WAIT)
 
If Err.Number <> DD_OK Then
    ' Code to handle error goes here.
End If

The following illustration shows the resulting lines.

You can apply materials and textures to a line list. The colors in the material or texture only appear along the lines drawn, not at any point in between the lines.