论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

避免IDirect3DDevice2::DrawPrimitive方法的分批_VC技术_C语言教程

文章类别:C语言程序设计 | 发表日期:2010-6-20 9:36:28

CString类转换为CTime时间类_VC技术_C语言教程

本文来自21视频教程网C语言频道

系统需求:
Windows 9x
Visual C++ 6.0 (或 5.0) 编译器
安装DirectX 6 或 7、8

  在Direct3D中,每当用IDirect3DDevice2接口进行质地感处理的时候,如果在我们的场景中调用IDirect3DDevice2::DrawPrimitive() 或 IDirect3DDevice2::DrawIndexedPrimitive()方法时,就会碰到这个分批问题。
  尽管分批改进了Direct3D的性能,但它也带来一些问题。当这两个方法之一被分批作业时,DirectX将它们缓冲在一起并将它们在一次性地传递到Direct3D设备驱动程序。如果我们在场景中修改表现状态,则这也要被缓冲。缓冲一旦装满或调用IDirect3DDevice2::EndScene()方法时,其内容则被马上传递到驱动程序。如果修改了场景而不改变表现状态,那么在我们的代码结构中会出现运行错误。
例如,如果我们在调用IDirect3DDevice2::DrawPrimitive 或 IDirect3DDevice2::DrawIndexedPrimitive之间修纹理内容之一,则两个原始的将被新的纹理替代。
这个问题可以通过在修改保持呈现状态的场景之前冲刷掉分批缓冲来避免。为了冲刷分批缓冲,用IDirect3DDevice2::SetRenderState()方法并将D3DRENDERSTATE_FLUSHBATCH的枚举值作为第一个参数传递。注意第二个参数必须是0。

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058