2.10.1基本图形显示
在D3D里只有几种基本图形可以显示的,它们分别是:
点列表、线列表、线带列表、三角形列表、三角形带列表、三角形扇形列表。
其它任何的图形,都可以由这向这几种基本图形组合出来。上面已经介绍了三角形显示了,所以这里就不再具体地说明它了。
1、
点列表
点列表主要显示为一个个像素点的集合,每个点都是单独显示,分离的。点列表作用是用来显示点元素,或者显示点线的。如下图所示:
上面这个图就是使用点列表来显示一条正弦曲线。其实它们都是由分理的点组成,每个点可显示为不同的颜色。
现在就看看怎么样用代码显示这条正弦曲线的。
HRESULT hr;
// 创建顶点缓冲区。
if( FAILED( hr = m_pd3dDevice->CreateVertexBuffer(
m_nPointListCount * sizeof(VT_CAIPRIMITIVE),
0, VT_CAIPRIMITIVE::dwFVF,
D3DPOOL_MANAGED, &m_pvbPointList, NULL ) ) )
{
//创建顶点缓冲区失败。
return DXTRACE_ERR( "CreateVertexBuffer", hr );
}
//
VT_CAIPRIMITIVE* pVertices;
if( FAILED( hr = m_pvbPointList->Lock( 0, 0, (VOID**)&pVertices, 0 ) ) )
{
//锁住顶点缓冲区。
return DXTRACE_ERR( "Lock", hr );
}
for (int i = 0; i < m_nPointListCount; i++)
{
float fX = -10.0f + (float)i * 0.1f;
float fY = sinf(fX);
pVertices[i].vPosition = D3DXVECTOR3( fX, fY, 0.0f );
pVertices[i].crDiffuse = D3DCOLOR_COLORVALUE( 1.0, 0.0, 0.0, 1.0 );
}
//解锁顶点缓冲区。
m_pvbPointList->Unlock();
上面这段代码,先创建点列表的顶点缓冲区,然后使用正弦函数计算点坐标的值,并把它们设置到顶点缓冲区里。接着就需要调用渲染函数:
m_pd3dDevice->SetStreamSource( 0, m_pvbPointList, 0, sizeof(VT_CAIPRIMITIVE) );
m_pd3dDevice->SetFVF( VT_CAIPRIMITIVE::dwFVF );
m_pd3dDevice->DrawPrimitive( D3DPT_POINTLIST, 0, m_nPointListCount );
先设置顶点缓冲区,然后调用DrawPrimitive函数来显示,这里第一个参数不一样,使用了D3DPT_POINTLIST类型,这个类型就是显示为点列表方式。
如果使用直线或者三角形不能显示的图形,就可以使用它来显示了。
本电子书、
MM3D
引擎源程序
、例子源程序共
49
元一套
联系人:蔡军生
联系方式:
QQ: 9073204
EMAIL: caimouse1976 at sina.com