游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1743|回复: 2

DrawIndexedPrimitive的参数问题

[复制链接]

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2006-4-16 01:40:00 | 显示全部楼层 |阅读模式
假设有一块已经写入值的VB和IB,我打算对这些数据分次渲染,比如第一次渲染前三个三角形,然后第二次从第四个三角形开始渲染.那么我要怎么做?

HRESULT DrawIndexedPrimitive(
  D3DPRIMITIVETYPE Type,
  INT BaseVertexIndex,
  UINT MinIndex,
  UINT NumVertices,
  UINT StartIndex,
  UINT PrimitiveCount
);

看了一下SDK文档,startIndex应该是用来指定渲染的起始INDEX的,我尝试设置它,结果在REF下就崩溃了事,HAL下就出来奇怪的结果.是否我对这个参数的理解有错?

对于StartIndex这个参数我是这样理解的,在提交时,StartIndex指向IB中设定的位置,然后从此处开始获得顶点.

7

主题

299

帖子

305

积分

中级会员

Rank: 3Rank: 3

积分
305
发表于 2006-4-16 01:49:00 | 显示全部楼层

Re:DrawIndexedPrimitive的参数问题

我猜你是对 PrimitiveCount理解错误造成越界而崩溃

应该填三角型个数而不是顶点个数

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2006-4-16 02:20:00 | 显示全部楼层

Re:DrawIndexedPrimitive的参数问题

PrimitvieCount的理解我想是没有什么问题,之前的代码是可以正常工作的,只是在每一个批次前都要进行LOCK/UNLOCK,所以重写了渲染部分,一次写入所有顶点和索引,然后分批次进行渲染,但是如果用原来的方法的话,每次渲染的都是第一批次的三角形,用
m_pDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0, c*4,0,c*2);
这样的方式来渲染的话,每次都是从第一个索引开始.但诸如Base,Min,Start这些为参数的话,都是出现非预期的结果.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 05:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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