DX9设备的一些方法介绍(IDirect3DDevice9)

1,IDirect3DDevice9::SetRenderState:设置单个设备渲染状态参数。
C++源码调用如下:

HRESULT SetRenderState([in] D3DRENDERSTATETYPE State,[in] DWORD              Value
);

参数说明:
**State:**正在修改的设备状态变量。此参数可以是D3DRENDERSTATETYPE枚举类型的任何成员。
D3DRENDERSTATETYPE:渲染状态定义各种顶点和像素处理的设置状态。有些渲染状态设置顶点处理,有些设置像素处理(请参见渲染状态(Direct3D 9))。可以使用状态块保存和还原渲染状态(请参见状态块保存并还原状态(Direct3D 9))。
Value: 要设置的设备呈现状态的新值。此参数的含义取决于为State指定的值。例如,如果State是D3DRS_SHADEMODE,则第二个参数将是D3DSHADEMODE枚举类型的一个成员。
在VB6中调用如下:

 Set CWD3DDevice9 = CWD3D9.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, CWHwnd, JSorH, CWDpp9)CWD3DDevice9.SetRenderState D3DRS_CULLMODE, D3DCULL_NONE' Alpha 混合的效果比 Alpha 测试好,但 Alpha 测试是直接剔除不透明像素,不需要做混合运算,可以提高性能。' Alpha 混合(实现透明度功能,可以全透明、不透明、半透明)CWD3DDevice9.SetRenderState D3DRS_ALPHABLENDENABLE, TrueCWD3DDevice9.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHACWD3DDevice9.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA' Alpha 测试(只能实现全透明和不透明,不能半透明,但是效率比 Alpha 混合高)CWD3DDevice9.SetRenderState D3DRS_ALPHATESTENABLE, TrueCWD3DDevice9.SetRenderState D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUALCWD3DDevice9.SetRenderState D3DRS_ALPHAREF, 1

2,IDirect3DDevice9::SetSamplerState:设置采样器状态值。
C++源码调用如下:

HRESULT SetSamplerState([in] DWORD               Sampler,[in] D3DSAMPLERSTATETYPE Type,[in] DWORD               Value
);

参数如下:
Sampler:采样器阶段索引。有关采样器阶段的详细信息,请参阅vs_3_0(DirectX HLSL)中的采样阶段寄存器。
Type:此参数可以是D3DSAMPLERSTATETYPE枚举类型的任何成员(采样器状态定义纹理采样操作,例如纹理寻址和纹理过滤。一些采样器状态设置顶点处理,一些设置像素处理。可以使用状态块保存和恢复采样器状态)。
Value:要设置的状态值。此值的含义由Type参数确定。
在VB6中调用如下:

    CWD3DDevice9.SetSamplerState 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEARCWD3DDevice9.SetSamplerState 0, D3DSAMP_MINFILTER, D3DTEXF_LINEARCWD3DDevice9.SetSamplerState 0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDERCWD3DDevice9.SetSamplerState 0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER

3,IDirect3DDevice9::SetTexture :为设备的舞台指定纹理。
C++调用源码:

HRESULT SetTexture([in] DWORD                 Stage,[in] IDirect3DBaseTexture9 *pTexture
);

参数说明:
Stage:基于零的采样器编号。纹理与采样器绑定;采样器定义采样状态,例如过滤模式和地址包装模式。可编程和固定功能管道对纹理的引用不同:可编程着色器使用采样器编号引用纹理。可编程着色器可用的采样器数量取决于着色器版本。有关顶点着色器,请参见采样器(Direct3D 9 asm vs)。有关像素着色器,请参见采样器(Direct3D 9 asm ps)。另一方面,固定函数管道通过纹理阶段编号引用纹理。取样器的最大数量由两个上限决定:D3DCAPS9结构的MaxSynchronialTextures和MaxTextureBlendStages。
阶段/采样器编号还有两种特殊情况。
一个名为D3DDMAPSAMPLER的特殊编号用于置换映射(Direct3D 9)。
当访问vs_3_0(DirectX HLSL)中的顶点纹理时,可编程顶点着色器使用由D3DVERTEXTURESAMPLER定义的特殊数字。
pTexture:指向IDirect3DBaseTexture9接口的指针,表示正在设置的纹理。
在VB6中的调用如下:

CWD3DDevice9.SetTextureStageState 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE

4,IDirect3DDevice9::Clear:清除一个或多个曲面,例如渲染目标、多个渲染目标、模具缓冲区和深度缓冲区。
C++调用源码:

HRESULT Clear([in] DWORD         Count,[in] const D3DRECT *pRects,[in] DWORD         Flags,[in] D3DCOLOR      Color,[in] float         Z,[in] DWORD         Stencil
);

参数说明:
Count:pRects处数组中的矩形数。如果pRects为NULL,则必须设置为0。如果pRects是有效指针,则不能为0。
pRects:指向描述要清除的矩形的D3DRECT(定义矩形)结构数组的指针。将矩形设置为渲染目标的尺寸,以清除整个曲面。每个矩形都使用与渲染目标上的点对应的屏幕坐标。坐标被剪裁到视口矩形的边界。要指示要清除整个视口矩形,请将此参数设置为NULL,并将“计数”设置为0。
Flags:一个或多个D3DCLEAR标志的组合,指定要清除的曲面。
Color:将渲染目标清除为此ARGB颜色。
Z:将深度缓冲区清除为这个新的z值,范围从0到1。请参阅备注。
Stencil:将模具缓冲区清除为此范围为0到2的新值ⁿ-1(n是模具缓冲区的位深度)。见备注。
在VB6中调用:

CWD3DDevice9.Clear 0, ByVal 0, D3DCLEAR_TARGET, BackColor, 0!, 0 '清除深度缓冲区

5,IDirect3DDevice9::BeginScene:开始场景。一般开始前要先使用IDirect3DDevice9::Clear清除缓冲区。
C++调用:

HRESULT BeginScene();

在VB6中调用如下:

CWD3DDevice9.BeginScene

6,IDirect3DDevice9::EndScene:结束通过调用IDirect3DDevice9::BeginScene开始的场景。
C++调用源码:

HRESULT EndScene();

在VB6调用:

CWD3DDevice9.EndScene '场景结束

7,IDirect3DDevice9::Present:按设备拥有的后台缓冲区的顺序显示下一个缓冲区的内容。
C++调用源码:

HRESULT Present([in] const RECT    *pSourceRect,[in] const RECT    *pDestRect,[in] HWND          hDestWindowOverride,[in] const RGNDATA *pDirtyRegion
);

参数说明:
pSourceRect:指向必须为NULL的值的指针,除非交换链是用D3DSWAPEFFECT_COPY创建的。pSourceRect是指向包含源矩形的RECT(RECT结构通过其左上角和右下角的坐标定义矩形。)结构的指针。如果为NULL,则显示整个源曲面。如果矩形超出源曲面,则矩形将剪裁到源曲面。
pDestRect:指向必须为NULL的值的指针,除非交换链是用D3DSWAPEFFECT_COPY创建的。pDestRect是指向包含目标矩形的RECT结构的指针,以窗口客户端坐标表示。如果为NULL,则填充整个客户端区域。如果矩形超出目标客户端区域,则矩形将被剪裁到目标客户端区域。
hDestWindowOverride:指向目标窗口的指针,其工作区被视为此演示文稿的目标。如果该值为NULL,则运行库将使用D3DPRESENT_PARAMETERS的hDeviceWindow成员来表示。
pDirtyRegion:除非使用D3DSWAPEFFECT_COPY创建交换链,否则值必须为NULL。有关交换链的详细信息,请参见翻转曲面(Direct3D 9)和D3DSWAPEFFECT。如果该值为非NULL,则包含的区域用后缓冲区坐标表示。区域内的矩形是需要更新的最小像素集。此方法通过仅复制区域内的像素或一些适当扩展的矩形集来优化表示时,将这些矩形考虑在内。这只是对优化的一种帮助,应用程序不应该依赖于精确复制的区域。实现可以选择复制整个源矩形。
在VB6中调用如下:

CWD3DDevice9.Present ByVal 0, ByVal 0, 0, ByVal 0   '刷新

8,IDirect3DDevice9::GetBackBuffer:从设备的交换链检索后台缓冲区。
C++调用代码:

HRESULT GetBackBuffer([in]          UINT               iSwapChain,[in]          UINT               iBackBuffer,[in]          D3DBACKBUFFER_TYPE Type,[out, retval] IDirect3DSurface9  **ppBackBuffer
);

参数说明:
iSwapChain:指定交换链的无符号整数。
iBackBuffer:要返回的后台缓冲区对象的索引。后台缓冲区的编号从0到后台缓冲区总数减1。值为0时返回第一个后缓冲区,而不是前缓冲区。无法通过此方法访问前缓冲区。使用IDirect3DDevice9::GetFrontBufferData(生成设备前缓冲区的副本,并将其放在应用程序提供的系统内存缓冲区中。)检索前缓冲区的副本。
Type:Direct3D 9不支持立体视图,因此此参数的唯一有效值是D3DBACKBUFFER_TYPE_MONO。
ppBackBuffer:指向IDirect3DSurface9接口的指针的地址,表示返回的后台缓冲区表面。
在VB6中调用如下:

Set BackBuffer = CWD3DDevice9.GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO)

9,IDirect3DDevice9::TestCooperativeLevel:报告窗口或全屏应用程序的Direct3D设备的当前协作级别状态。如果方法成功,返回值为D3D_OK,表示设备可以运行,调用应用程序可以继续。如果方法失败,返回值可以是以下值之一:D3DERR_DEVICELOST、D3DERR_DEVICENOTRESET、D3TERR_DRIVERINTERNALERROR。
c++调用:

HRESULT TestCooperativeLevel();

在VB6中调用:

If CWD3DDevice9.TestCooperativeLevel = D3DERR_DEVICENOTRESET Then  '检测到设备丢失

10,IDirect3DDevice9::Reset:重置交换链的类型、大小和格式。
C++调用:

HRESULT Reset([in, out] D3DPRESENT_PARAMETERS *pPresentationParameters
);

在VB6中调用:

CWD3DDevice9.Reset CWDpp9

DX9设备的一些方法介绍-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(10)相关推荐

  1. DX9的一些方法介绍-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(9)

    DX9的一些方法介绍(IDirect3D9) 在前边的源码中,引用了一些DX9的方法,我这里做了一个笔记,大家可以看看. 1,IDirect3DDevice9::SetTexture 方法:将纹理分配 ...

  2. console连接h3c s5500_H3C设备通过Console口登录设备的配置方法介绍

    H3C 设备通过 Console 口登录设备的配置方法介绍 H3C 设备通过 Console 口登录设备的配置方法介 绍 做网络配置交换机时一般都是通过 Console 口进行连接配置,但我 们可能会 ...

  3. h3c服务器Console安装系统,H3C设备通过Console口登录设备的配置方法介绍

    <H3C设备通过Console口登录设备的配置方法介绍>由会员分享,可在线阅读,更多相关<H3C设备通过Console口登录设备的配置方法介绍(3页珍藏版)>请在人人文库网上搜 ...

  4. 蒙特卡洛树搜索方法介绍——规划与学习

    蒙特卡洛树方法介绍--规划与学习 引言 环境与模型 规划思想与学习思想 规划与学习的相同点 规划与学习的不同点 规划的特点 学习的特点 引言 本节通过对动态规划方法.蒙特卡洛方法.时序差分方法进行归纳 ...

  5. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...

    一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4-&g ...

  6. c语言程序设计需要学多久,九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会...

    九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会 首页 > C语言 > 九江c语言编程学习 作者:镀金池   发布时间:2017-10-18 14:11 据ID ...

  7. c语言程序设计自学跟谁好,双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好...

    双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好 首页 > 软件 > 双辽c语言编程学习 作者:镀金池   发布时间:2017-12-07 05:48 一个C语 ...

  8. (已更新)最新王者荣耀英雄图鉴小程序源码,包含王者中各大板块内容介绍

    王者英雄图鉴是一个关于王者荣耀英雄介绍的小程序,有装备.技能.铭文.英雄.皮肤等各大板块,里面不仅详细介绍了各类信息还有教程等资源,进入英雄详情时还会播放台词. 小程序使用 uni-app 和 Tai ...

  9. c语言编程学多久,丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会...

    丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会 首页 > 软件 > 丰城c语言编程学习 作者:镀金池   发布时间:2018-04-09 16:40 在之后 ...

最新文章

  1. 模块加载过程代码分析1
  2. 基于NVIDIA显卡的硬编解码的一点心得 (完结)
  3. 王者荣耀中有哪些获胜率高的玩法?
  4. python基础教程:global的用法
  5. javase基础第三天
  6. php.ini文件中的include_path设置
  7. MPLS(多协议标记交换)协议能否降低跨省组建企业专网的成本?
  8. java B2B2C Springboot电子商城系统-eureka详解
  9. Python清屏命令:)
  10. 密码学系列 - 双线性对
  11. 协议栈之packet_type
  12. 梯形图转化c语言,PLC梯形图转换成STL程序
  13. 不可重复读,虚读和脏读的区别
  14. 跨平台,跨浏览器兼容性问题_跨浏览器兼容性检查的完整指南
  15. ubuntu GStreamer + QT多媒体播放器开发(三)
  16. 用 Amazon Web Services 进行云计算,第 3 部分: 用 EC2 根据需要提供服务器
  17. 【python10个小实验】2、石头、剪刀、布
  18. 网易七鱼在线客服系统web端对接
  19. 计算广告(1)---一些概念
  20. javaMail 发送邮件 标题过长出现乱码

热门文章

  1. 12 月 15 日,Google DevFest 2019 谷歌开发者节,侬久等啦!
  2. springboot+thymeleaf+ajax局部刷新
  3. 利用QT进行web与本地混合应用开发
  4. 怎样进服务器手机版视频文件,手机播放云服务器中的视频文件
  5. JSONObject详解
  6. 【electron】判断当前进程是否是开发环境的五种方案(获取一些资源的路径)
  7. Endnote在Word中导入的参考文献忽然变成带有大括号类似{#}的代码的解决办法
  8. 电脑流氓文件残留删除方法之修改后缀
  9. wpf中DataGrid的样式
  10. 软件测试之——性能测试