d3d多渲染窗口结构
来源:互联网 发布:淘宝客开通 编辑:程序博客网 时间:2024/05/29 06:58
使用d3d的交换链可以方便的实现多渲染窗口结构,类的层次结构如下图所示:
D3DRes用来定义dx设备丢失的处理,所有需要关心设备丢失的资源都从此类继承,然后重写设备丢失回调函数和设备重置回调函数即可方便的处理设备丢失。
RenderTarget用来定义基本的渲染目标,成员包括长宽及大小的定义,及渲染目标的虚接口定义(比如:缓冲区切换等)。
Win32Window封装win32接口,传入配置参数创建并注册windows窗口,并定义消息处理回调,利用监听器或者事件机制向外部应用层传递鼠标键盘操作。
RenderWindow从D3DRes及RenderTarget继承,并聚合Win32Window对象,表示一个可渲染的窗口。在RenderWindow创建的时候,根据外部传入的D3D对象(IDirect3D9)创建D3D Device;有了D3D Device,对于主窗口可通过接口函数GetSwapChain获取Device的SwapChain对象,代码如下:
IDirect3DSwapChain9* pSwapChain = 0; if( d3d_device) { d3d_device->GetSwapChain(0, &pSwapChain); }
对于非主窗口,则需要利用Device的接口CreateAdditionalSwapChain来创建更多的交换链对象,此接口需要硬件支持,因此创建之前需要检查硬件设备能力。 准备好RenderWindow的交换链对象后,在渲染帧即可调用Present接口驱动硬件渲染:
void RenderWindow::SwapBuffers() { LPDIRECT3DDEVICE9 d3d_device = Graphics::Inst()->GetD3DDevice(); if(d3d_device) { if (D3DERR_DEVICELOST == mSwapChain->Present(NULL, NULL, mhWnd, NULL, 0)) { this->ResetDevice(); } } }
———-分割线—————
应用层通过创建并管理一个RenderWindow的数组,并在渲染主循环中依次切换渲染,即可实现多渲染窗口结构。
- d3d多渲染窗口结构
- D3D渲染YUV,窗口改变后,参数设置
- d3d在mfc窗口下渲染延迟
- 在D3D窗口中渲染WINDOWS的基本控件
- Window 窗口属性及嵌入窗口到D3D渲染窗口顶层
- D3D文字渲染心得
- d3d渲染流程
- D3D中的渲染
- D3D加载纹理渲染
- D3D渲染过程
- D3D固定渲染管线
- d3d渲染状态
- D3D渲染实时流
- d3d渲染管线前缀
- D3D渲染过程
- 多动画集在D3D下的渲染
- 多动画集在D3D下的渲染
- 多动画集在D3D下的渲染
- linux下zombie进程
- C语言在中<math.h>中sqrt()函数的使用
- 在主函数main()之后再执行另外一个函数的方法
- 伪随机数算法
- 如何在WP7上录制音频
- d3d多渲染窗口结构
- ORACLE的隔离级别
- 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
- mssql bom
- TI DSP C6000 中断
- 如何使用Windows Phone 7打电话
- smarty学习札记
- make menuconfig编译linux内核错误:'make menuconfig' requires the ncurses libraries
- 设置IE9的新网页在新选项卡中打开,而不是新窗口中打开