游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3563|回复: 9

Direct3D在DrawIndexedPrimitive时疯掉了。

[复制链接]

4

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2006-6-25 01:38:00 | 显示全部楼层 |阅读模式
现在有N个矩形,需要画到屏幕上,各个矩形是独立的。各个矩形有位置和贴图坐标。
我采用的方法是定义这样的顶点格式和索引。

0----1
|    |
|    |
3----2

struct vtRect
{
D3DXVECTOR3 pos;
D3DXVECTOR2 tex;
};

//Index sequence ={0, 1, 2, 0, 2, 3},每两个Triangle一次循环。当然会递增。
DrawIndexedPrimitive的参数为
pDev->DrawIndexedPrimitive
(D3DPT_TRIANGLELIST,
0,
0,
4*m_nVisibleRectCount,
0,
2*m_nVisibleRectCount
}
结果是m_nVisibleRectCount => 1的情况下只画了第一个Rect而不是m_nVisibleRectCount个(即两个三角List的贴图),但是在Debug下却能有正确的输出。

我已经把在Release下的Vertex和Index数据输出来和Debug下比较了,完全相同。郁闷啊。

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-6-25 14:20:00 | 显示全部楼层

Re:!!!救命啊,这个世界太疯狂了。Direct3D在DrawIndexedPr

检查一下顶点的FVF、Declaration和StreamSource中的Strider是否设置正确
我以前DrawIndexPrimitive的时候,Vertex数量没注意设了个0,N卡上没问题能跑,A卡上就跑不出来,DEBUG下跑不了,RELEASE下就能跑

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-6-25 14:21:00 | 显示全部楼层

Re:!!!救命啊,这个世界太疯狂了。Direct3D在DrawIndexedPr

还有就是打开控制面板的D3D Debug,把Debug Level调到倒数第二档,看看有没有错误信息

4

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2006-6-27 09:57:00 | 显示全部楼层

Re:Direct3D在DrawIndexedPrimitive时疯掉了。

我没有用多流,没有用到Declaration。

还有就是贴图总是比较小。难道要用RHW,直接指定屏幕位置?

4

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2006-7-1 22:52:00 | 显示全部楼层

Re:Direct3D在DrawIndexedPrimitive时疯掉了。

help!!!

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2006-7-3 13:04:00 | 显示全部楼层

Re:Direct3D在DrawIndexedPrimitive时疯掉了。

你指的DEBUG下是什么?
D3D的DEBUG,工程DEBUG编译,还是单步DEBUG执行?
如果是单步DEBUG,执行结果确实可能不一样,因为在单步DEBUG下,渲染目标窗口可能因为焦点变化(WM_ACTIVATEAPP)而执行了不同的代码(比如某些东西的RESET),这样渲染结果就不一样了.

4

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2006-7-4 11:58:00 | 显示全部楼层

Re:Direct3D在DrawIndexedPrimitive时疯掉了。

moremoretime

我指的是工程(MFC)Debug编译。
编译两个,一个Debug,一个Release版本。

4

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2006-7-9 10:44:00 | 显示全部楼层

Re:Direct3D在DrawIndexedPrimitive时疯掉了。

help!!!
高手啊,快来救命啊!

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2006-7-9 18:36:00 | 显示全部楼层

Re:Direct3D在DrawIndexedPrimitive时疯掉了。

你不会把指令写在 ASSERT( XX )里吧.

4

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2006-7-17 10:01:00 | 显示全部楼层

Re:Direct3D在DrawIndexedPrimitive时疯掉了。

moremoretime
你不会把指令写在 ASSERT( XX )里吧.


谢谢你的回答,我没有开这样的玩笑。
奇怪的是第一和第二个三角形是画出来了(Release)可是后面的全都没出来。郁闷!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 23:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表