//顶点声明
OnD3D9CreateDevice()
{
....
D3DVERTEXELEMENT9 decl[] =
{
{ 0, 0, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
D3DDECL_END()
}; V_RETURN( pd3dDevice->CreateVertexDeclaration( decl, &g_pVertexDeclaration ) );
..
}
//顶点结构
OnD3D9ResetDevice()
{
......
// Setup render states
pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );
pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ); // Create and initialize vertex buffer测试,用最简单的三角形
V_RETURN( pd3dDevice->CreateVertexBuffer( 3 * sizeof( D3DXVECTOR2 ),
0, 0,
D3DPOOL_DEFAULT, &g_pVB, NULL ) ); D3DXVECTOR2* pVertices;
V_RETURN( g_pVB->Lock( 0, 0, ( void** )&pVertices, 0 ) ); for( WORD i =0; i<3; i++)
{
*pVertices++= D3DXVECTOR2( 200*sinf( i*D3DX_PI/4.0)+300, 200*cosf( i*D3DX_PI/4.0)+250);
} V_RETURN( hr = g_pVB->Unlock() ); //Create and initialize index buffer WORD* pIndices;
V_RETURN( pd3dDevice->CreateIndexBuffer( 3 * sizeof( WORD ),
0, D3DFMT_INDEX16,
D3DPOOL_DEFAULT, &g_pIB, NULL ) );
V_RETURN( g_pIB->Lock( 0, 0, ( void** )&pIndices, 0 ) ); pIndices[0] = ( WORD )( 0 );
pIndices[1] = ( WORD )( 1 );
pIndices[2] = ( WORD )( 2 );
V_RETURN( g_pIB->Unlock() );
......
}
//画三角形
OnD3D9FrameRender()
{
..
if( SUCCEEDED( pd3dDevice->BeginScene() ) )
{ pd3dDevice->SetVertexDeclaration( g_pVertexDeclaration );
pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( D3DXVECTOR2 ) );
pd3dDevice->SetIndices( g_pIB );
V( pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, 0, 3,
0, 1 ) );
..
}
我怎么看都找不到问题啊,问什么一运行就说D3DERE_INVALIDCAL(0x887686c)
Calling:pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, 0, 3, 0, 1 )如果不用索引模式,就没事,为什么呢?请求帮助
解决方案 »
- 疑难问题还望高高高高手指点!!!
- 我已经加入了LIB文件 而且程序中也写了预处理语句 为什么还是出现函数未定义的错误?
- 请问:关于窗口切换问题(在线等待,谢谢)!
- 大家还用vc开发c/s结构的企业及应用么?
- 请教!请教!怎么用VC导出注册表里的系统软件列表????
- 请教
- AnimateWindow(GetSafeHwnd(),500,AW_CENTER)这个命令包括再那儿?
- 好用的图象处理控件
- 谁有单文档多视图的例子?最好是可以通过Tab控件switch.
- 关于DirectShow的VMR9中BMPMIX9例程的问题
- 人民邮电出版社(明日科技)出版的《Visual C++ 管理信息系统完整项目实例剖析》 求下载地址??
- MFC 打开文档 把文档的内容 返回到Edit Control上!!!!急!
// Create and initialize vertex buffer测试,用最简单的三角形
V_RETURN( pd3dDevice->CreateVertexBuffer( 3 * sizeof( D3DXVECTOR2 ),
0, 0,
D3DPOOL_DEFAULT, &g_pVB, NULL ) );
设置4点试试.
在顶点声明里
{ 0, 0, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
如果用D3DDECLTYPE_FLOAT2,则必须在vertex shader中重写为FLOAT3
否则必须用D3DDECLTYPE_FLOAT3这个参数。
对于固定流水线来说,好像不认FLOAT2的。
这个错误是通过PIX查到的