文档章节

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

rise-worlds
 rise-worlds
发布于 2016/06/20 13:36
字数 559
阅读 4
收藏 0
好好的一个程序,在我的电脑(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(
  D3DPRIMITIVETYPE PrimitiveType , // 图原的类型
  UINT MinVertexIndex ,  // 指定0
  UINT NumVertices ,  // 指定需要渲染的顶点的数量(如一个矩形可以由4个顶点组成,然后通过顶点索引来达到渲染2个三角形的效果,那么这里就应该填写4,而不是6)
  UINT PrimitiveCount , // 要渲染的图原的数量(如一个矩形,由两个三角形组成,就应该填写2)
  CONST void * pIndexData , // 索引数据指针
  D3DFORMAT IndexDataFormat , // 索引数据格式,一般为D3DFMT_INDEX16或D3DFMT_INDEX32 
  CONST void* pVertexStreamZeroData , // 顶点数据指针
  UINT VertexStreamZeroStride // 顶点大小一般为sizeof(顶点结构)
);

记得默认情况下渲染三角形的顺序是逆时针的(初学者经常范这个错误,本来想渲染一个矩形,结果一个三角形顺时间、另一个三角形逆时针,结果渲染出来只看到一个三角形了,被背面剔除掉了)。


李锦俊 2006-12-25 15:11 发表评论

本文转载自:http://www.cnblogs.com/flying_bat/archive/2007/08/31/877254.html

共有 人打赏支持
rise-worlds

rise-worlds

粉丝 2
博文 1755
码字总数 0
作品 0
深圳
程序员
私信 提问
(总结)python 3程序开发指南(四)控制语句与函数

1.if else 经典用法:offset = 20 if sys.platform.startswith("win") else 10,但要注意后面有时候需要加上(),防止微妙的陷阱. 2.注意while和for in循环后以及在try except模块后,都可用els...

索隆
2012/04/24
0
0
PostgreSQL Oracle 兼容性之 - ALTER TRIGGER ENABLE|DISABLE

标签 PostgreSQL , 触发器 , enable , disable 背景 Oracle 临时关闭或启用触发器的语法如下 https://docs.oracle.com/cd/B1930601/server.102/b14200/statements4001.htm PostgreSQL 触发器......

德哥
2018/05/06
0
0
硬件大拿现场揭秘——如何开发产品更省钱

loT时代,不止是拼创意,更要拼资本! 没有资本,也想玩转烧钱的智能硬件? 机智云高级项目经理Alex为你现场揭秘——智能硬件实现零成本开发的秘密! APICloud创始人刘鑫传授独家开发秘笈从方...

物联网小能手
2016/07/20
0
0
硬件大拿现场揭秘——如何开发产品更省钱

loT时代,不止是拼创意,更要拼资本! 没有资本,也想玩转烧钱的智能硬件? 机智云高级项目经理Alex为你现场揭秘——智能硬件实现零成本开发的秘密! APICloud创始人刘鑫传授独家开发秘笈从方...

物联网小能手
2016/07/20
19
0
操作系统双重模式和中断机制和定时器概念

一、陷阱中断 还是想记录下这方面的知识吧,所以想来也写写。 现代的操作系统其实都是由中断驱动的,中断其实本质上就是一种电信号,当有某些事件发生之后就会去产生中断,然后中断控制器进行...

zcmuczx
2018/04/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day11

architect刘源源
今天
6
0
论学好Linux系统的超级重要性

不知道各位在日常的工作生活中有没有接触过“rm -rf /*”这个命令,因为这个命令搞出来的事情可还不少呢!前段时间就在一个群里看到了有个小伙子,老板让他去维护一下服务器,这小伙也不太懂...

Linux就该这么学
昨天
6
0
git 使用

1,首先在github配置好信息和仓库,然后在本地进行操作 git init git config user.name 'zhangwuer' git config user.email '56789053@qq.com' 2,与远程分支建立连接 git checkout -b test......

天王盖地虎626
昨天
3
0
git checkout 命令详解

在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 在下面的命令中,使用了一些简写,在这里说明一下: git st # git statusgit ci ...

shzwork
昨天
10
0
【Nginx】Nginx多级代理,获取客户端真实请求IP以及每级代理IP

Nginx多级代理,获取客户端真实请求IP以及每级代理IP 如图所示,每一级nginx里的location配置里需要加上对应的配置,最后一级nginx是直接到应用,测试时为了方便,直接用echo模块去测试,打印...

薛定谔的旺
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部