Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 硬件兼容性的陷阱,DrawIndexedPrimitiveUP的用法
【标  题】:硬件兼容性的陷阱,DrawIndexedPrimitiveUP的用法
【关键字】:DrawIndexedPrimitiveUP
【来  源】:http://www.cppblog.com/mybios/archive/2006/12/25/16840.html

硬件兼容性的陷阱,DrawIndexedPrimitiveUP的用法

Your Ad Here 好好的一个程序,在我的电脑(ELSA X800 256M显卡)上运行一切正常,拿到别的电脑(845G内置显卡)上。啊。花屏~~赶快调试,幸好公司的电脑也有这种内置显卡的电脑。赶快用远程调试。谁知这一调试,就花了我整整一个上午。。。赶快写下来。。。

最终排差的原因是DrawIndexedPrimitiveUP最后一个参数VertexStreamZeroStride ,这个参数是用来指定顶点所占的字节数。我自作聪明的把顶点结构后增加了一个自己用的数据,如:正常的顶点结构
struct CUSTOMVERTEX
{
?FLOAT x, y, z,rhw;
?DWORD color;
?float u,v;
};

我改了之后的顶点结构:
struct CUSTOMVERTEX
{
?FLOAT x, y, z,rhw;
?DWORD color;
?float u,v;
DWORD dwMyData; // 用来保存我自己用的数据
};

结果,在我的显卡上一切正常,这个数据也有用,然后DrawIndexedPrimitiveUP的时候,也会根据最后的参数sizeof(CUSTOMVERTEX)顺利的读取相应的顶点。但是,拿到845G的内置显卡上就死活花屏。后来终于知道是这个原因,于是解决办法就是把dwMyData去掉,放到顶点结构外面去。

顺便说说DrawIndexedPrimitiveUP的用法:
HRESULT DrawIndexedPrimitiveUP(
? D3DPRIMITIVETYPEPrimitiveType, // 图原的类型
? UINTMinVertexIndex,? //?指定0
? UINTNumVertices,? // 指定需要渲染的顶点的数量(如一个矩形可以由4个顶点组成,然后通过顶点索引来达到渲染2个三角形的效果,那么这里就应该填写4,而不是6)
? UINTPrimitiveCount, // 要渲染的图原的数量(如一个矩形,由两个三角形组成,就应该填写2)
? CONST void *pIndexData, // 索引数据指针
? D3DFORMATIndexDataFormat, // 索引数据格式,一般为D3DFMT_INDEX16或D3DFMT_INDEX32?
? CONST void*pVertexStreamZeroData, // 顶点数据指针
? UINTVertexStreamZeroStride // 顶点大小一般为sizeof(顶点结构)
);

记得默认情况下渲染三角形的顺序是逆时针的(初学者经常范这个错误,本来想渲染一个矩形,结果一个三角形顺时间、另一个三角形逆时针,结果渲染出来只看到一个三角形了,被背面剔除掉了)。
函数指针(全局函数/类成员函数)、函数对象(Function object):【上一篇】
RPG程序框架探讨:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • [数据库]Oracle的培训讲师是个东北人
  • 常见AIX故障解决(1)
  • 魔术方块型USB--USB Twister Hub
  • 解决Word表格粘贴的错位问题
  • 无固定密码验证后门雏形 (ALLyeSNO)
  • locate命令查找文件
  • 晚上新增一块scsi硬盘...
  • java 起步
  • 为什么我的网站访问量很大,产品却没人购买?
  • 最广泛报表数据源模型
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.