d3d游戏入门例子中遇到的小问题

1. m_d3dEnumeration.AppUsesDepthBuffer = TRUE; // 设置为FALSE,产生花屏。
2. m_pFont->RestoreDeviceObjects(); // 忽略后显示-“xx”指令的“xx”内存不能为读。
3. m_pd3dDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE); // 背面剔除
4. m_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST,  // _TRIANGLESTRIP左下方三角无图,显示颜色(彩虹) 0, 
                                                                       0,        4,  //number of vertices         0,         2 //number of primitives  );

 

以下代码,用4个定点画个巨型,结果只显示一个三角形,

        { 150.0f,  50.0f,   0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
        { 150.0f,  250.0f, 0.5f, 1.0f, 0xff00ff00, },
        {  50.0f,   250.0f, 0.5f, 1.0f, 0xff00ffff, },
        {  20.0f,   50.0f,   0.5f, 1.0f, 0xff00ff0f, },  ........

     g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP,0,2);

解决办法:  关闭背面剔除,显示2个三角,但不是矩形。http://bbs.gameres.com/showthread.asp?threadid=29028    

                     "可以画出两个三角形的,却组不成正方形,你看不到,是因为法线在反面,设定为双面渲染你就知道了!"

10月16日:

 

HRESULT DrawPrimitiveUP(

   D3DPT_POINTLIST,        //D3DPRIMITIVETYPE  PrimitiveType    图元类型
       g_width,                            //UINT  PrimitiveCount   发送给函数的图元总数
       data,                                   //CONST void* pVertexStreamZeroData  图元数据数组
       sizeof(point_vertex));     //UINT  VertexStreamZeroStride 每个顶点的大小

DrawPrimitiveup()函数的参数包括要绘制的图元类型、图元数量、保存要绘制的数据数组、顶点流大小。

    第一个参数是图元类型,如果要绘制的图元是一些点,那么该参数值可以设为D3DPT_POINTLIST;如果要绘制的图元是一些线段,那么该参数值可以设为D3DPT_LINELIST(例如:点1和点2连接,点3和点4连接);如果要绘制的图元是连接的线段,那么该参数值可以设为D3DPT_LINESTRIP(例如:点1和点2相连,点2和点3相连);如果要绘制的图元是一些离散的三角形,那么该参数值可以设为D3DPT_TRIANGLELIST(例如:点1、点2和点3构成一个三角形,而点4、点5和点6构成另一个三角形);如果要绘制的图元是一些相连的三角形,那么该参数值可以设为D3DPT_TRIANGLESTRIP(例如:点1、点2和点3构成一个三角形,点2、点3和点4构成另一个三角形);也可以设为D3DPT_TRIANGLEFAN(例如:点1、点2和点3构成一个三角形,而点1、点3和点4构成另一个三角形)。当处理三角形时,所选的三角形类型取决于将数据发送给渲染API的方式。如果发送给Direct3D API一列三角形,而三角形中的每个点互不相同,那么D3DPT_TRIANGLELIST就是最佳选择。其余参数非常简单明了。    第二个参数是发送给函数的图元总数。如果将要绘制10个三角形,那么应该设该参数为10,除非只想绘制某一部分图元。    第三个参数是发送给该函数的图元数据数组。    第四个参数和最后一个参数是每个顶点的大小(单位:字节)。如果每个顶点都只指定了x、y、z浮点坐标位置数据,那么该参数值应该是12个字节。这因为它包含三个值,每个值分别是4个字节。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值