DX9的一些方法介绍(IDirect3D9)

在前边的源码中,引用了一些DX9的方法,我这里做了一个笔记,大家可以看看。
1,IDirect3DDevice9::SetTexture 方法:将纹理分配给设备的阶段。
C++源码调用:

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

参数说明:
Stage:基于零的采样器编号。 纹理绑定到采样器;采样器定义采样状态,例如筛选模式和地址包装模式。
pTexture:指向 IDirect3DBaseTexture9 接口的指针,表示要设置的纹理。

在VB6中调用如下:

CWD3DDevice9.SetTexture 0, Nothing

2,IDirect3DDevice9::SetFVF:设置当前顶点流声明。
C++语法源码:

HRESULT SetFVF([in] DWORD FVF
);

参数说明:FVF,包含固定函数顶点类型的DWORD。有关更多信息,请参见D3DFVF。
D3DFVF:灵活顶点格式常数(FVF代码)用于描述将由固定函数管道处理的单个数据流中交错的顶点的内容。
C++源码:定义自定义顶点类型和FVF代码。

struct LVertex
{FLOAT    x, y, z;D3DCOLOR specular, diffuse;FLOAT    tu, tv;
};const DWORD VertexFVF = (D3DFVF_XYZ | D3DFVF_DIFFUSE |D3DFVF_SPECULAR | D3DFVF_TEX1 );

在冷风(CoolWind2D)引擎中D3DFVF定义如下:

Public Type D2DVector   '2D顶点类X As SingleY As SingleZ As SingleRhw As SingleColor As CWColorConstants
'    Specular As Long
'    Tu As Single
'    Tv As Single
End Type

3,IDirect3DDevice9::DrawPrimitiveUP:将用户内存指针指定的数据呈现为指定类型的几何图元序列。
C++源码:

HRESULT DrawPrimitiveUP([in] D3DPRIMITIVETYPE PrimitiveType,[in] UINT             PrimitiveCount,[in] const void       *pVertexStreamZeroData,[in] UINT             VertexStreamZeroStride
);

参数说明:
PrimitiveType:类型:D3DPRIMITIVETYPE,D3DPRIMITIVETYPE枚举类型的成员,描述要呈现的原语的类型。
D3DPRIMITIVETYPE枚举类型C++原型如下:

typedef enum D3DPRIMITIVETYPE { D3DPT_POINTLIST      = 1,//D3DPT_点列表,将顶点渲染为孤立点的集合。索引基元不支持此值。D3DPT_LINELIST       = 2,//D3DPT_管线,将顶点渲染为孤立直线段的列表。D3DPT_LINESTRIP      = 3,//D3DPT_管线跳闸,将顶点渲染为单个多段线。D3DPT_TRIANGLELIST   = 4,//D3DPT_三角列表,将指定顶点渲染为一系列孤立三角形。每组三个顶点定义一个单独的三角形。背面消隐受当前缠绕顺序渲染状态的影响。D3DPT_TRIANGLESTRIP  = 5,//D3DPT_三角行程,将顶点渲染为三角形条带。背面消隐标志在偶数三角形上自动翻转。D3DPT_TRIANGLEFAN    = 6,//D3DPT_三角风扇,将顶点渲染为三角形扇形。D3DPT_FORCE_DWORD    = 0x7fffffff//强制此枚举编译为32位大小。如果没有该值,某些编译器将允许此枚举编译为32位以外的大小。不使用此值。
} D3DPRIMITIVETYPE, *LPD3DPRIMITIVETYPE;

PrimitiveCount:要渲染的基元数。允许的最大基元数是通过检查D3DCAPS9(表示通过Direct3D对象公开的硬件功能。)结构的MaxPrimitiveCount成员来确定的。

pVertexStreamZeroData:指向顶点数据的用户内存指针。
VertexStreamZeroStride:每个顶点的数据字节数。此值不能为0。

在VB6中,对此使用方法如下:

CWD3DDevice9.DrawPrimitiveUP D3DPT_POINTLIST, 1, Vector2D, LenB(Vector2D)

4,IDirect3D9::GetDeviceCaps:检索有关设备的设备特定信息。
C++调用源码:

HRESULT GetDeviceCaps([in]  UINT       Adapter,[in]  D3DDEVTYPE DeviceType,[out] D3DCAPS9   *pCaps
);

参数说明:
Adapter:适配器,表示显示适配器的序数。D3DADAPTER_DEFAULT始终是主显示适配器。
D3DDEVTYPE DeviceType:D3DDEVTYPE枚举类型的成员。表示设备类型。
D3DCAPS9:指向D3DCAPS9结构的指针,该结构将填充描述设备功能的信息。
在VB中的 调用如下:

CWD3D9.GetDeviceCaps 0, D3DDEVTYPE_HAL, CWD3Dc9

5,IDirect3D9::CreateDevice:创建表示显示适配器的设备。
C++调用源码:

HRESULT CreateDevice([in]          UINT                  Adapter,[in]          D3DDEVTYPE            DeviceType,[in]          HWND                  hFocusWindow,[in]          DWORD                 BehaviorFlags,[in, out]     D3DPRESENT_PARAMETERS *pPresentationParameters,[out, retval] IDirect3DDevice9      **ppReturnedDeviceInterface
);

参数说明:
Adapter:表示显示适配器的序数。D3DADAPTER_DEFAULT始终是主显示适配器。
DeviceType:表示所需设备类型的D3DDEVTYPE枚举类型的成员。如果所需的设备类型不可用,该方法将失败。
hFocusWindow:当应用程序从前台模式切换到后台模式时,焦点窗口会向Direct3D发出警报。参见备注。对于全屏模式,指定的窗口必须是顶级窗口。对于窗口模式,仅当pPresentationParameters的hDeviceWindow成员设置为有效的非NULL值时,此参数才可能为NULL。
BehaviorFlags:控制设备创建的一个或多个选项的组合。有关更多信息,请参阅D3DCREATE。
pPresentationParameters:指向D3DPRESENT_PARAMETERS结构的指针,描述要创建的设备的表示参数。如果BehaviorFlags指定D3DCREATE_ADAPTERGROUP_DEVICE,则pPresentationParameters是一个数组。无论存在多少个头,都只会自动创建一个深度/模具表面。
ppReturnedDeviceInterface:指向返回的IDirect3DDevice9接口的指针的地址,该接口表示创建的设备。
在VB6中调用如下:

 Set CWD3DDevice9 = CWD3D9.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, CWHwnd, JSorH, CWDpp9)

6,IDirect3D9::CheckDeviceMultiSampleType:确定此设备上是否提供多重采样技术。
c++调用源码:

HRESULT CheckDeviceMultiSampleType([in]  UINT                Adapter,[in]  D3DDEVTYPE          DeviceType,[in]  D3DFORMAT           SurfaceFormat,[in]  BOOL                Windowed,[in]  D3DMULTISAMPLE_TYPE MultiSampleType,[out] DWORD               *pQualityLevels
);

参数说明:
Adapter:表示要查询的显示适配器的序号。D3DADAPTER_DEFAULT始终是主显示适配器。当此值等于或超过系统中显示适配器的数量时,此方法返回FALSE。参见备注。
DeviceType:表示所需设备类型的D3DDEVTYPE枚举类型的成员。如果所需的设备类型不可用,该方法将失败。
SurfaceFormat:D3DFORMAT枚举类型的成员,指定要进行多采样的曲面的格式。有关更多信息,请参阅备注。
Windowed:窗口,布尔值。指定TRUE查询窗口多采样,指定FALSE查询全屏多采样。
MultiSampleType:D3DMULTISAMPLE_TYPE枚举类型的成员,标识要测试的多采样技术。
pQualityLevels:pQualityLevels返回给定样本类型可用的特定于设备的采样变量数。例如,如果返回值为3,则在创建具有给定样本计数的资源时,可以使用质量级别0、1和2。这些质量等级的含义由设备制造商定义,无法通过D3D查询。例如,对于特定设备,固定样本数下的不同质量级别可能表示样本位置的不同空间布局或不同的解析方法。如果不需要返回质量级别,则可以为NULL。
在VB6中调用如下:

'     CWD3D9.CheckDeviceMultiSampleType 0, D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, 1, i
'     CWD3D9.CheckDeviceMultiSampleType 0, D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, 0, i

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

  1. 云开发版高效学习微信小程序源码包含复习资料学习共享护眼精灵等功能

    ☑️ 编号:X0016 ☑️ 品牌:暂无 ☑️ 语言:微信小程序 ☑️ 数据库:无需数据库 ☑️ 类型:微信小程序 ☑️ 规格:小程序 ※ 欢迎关注私信(发消息不限制),领取福利 ※ ☑️ 源码介绍: ...

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

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

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

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

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

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

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

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

  6. 江门C语言培训,江门c语言编程学习,江门学c语言编程培训,江门学c语言编程效果怎么样...

    江门c语言编程学习,江门学c语言编程培训,江门学c语言编程效果怎么样 首页 > C语言 > 江门c语言编程学习 作者:镀金池   发布时间:2017-10-18 09:25 在初期的C语言 ...

  7. C语言报名里面培训怎么填,庄河c语言编程学习,庄河学c语言编程培训,庄河学c语言编程报个培训班怎么样...

    庄河c语言编程学习,庄河学c语言编程培训,庄河学c语言编程报个培训班怎么样 首页 > 软件 > 庄河c语言编程学习 作者:镀金池   发布时间:2017-11-29 11:13 明天利用时 ...

  8. 安庆师范大学c语言程序设计,安庆c语言编程学习,安庆学c语言编程培训,安庆学c语言编程一般能拿多少工资...

    安庆c语言编程学习,安庆学c语言编程培训,安庆学c语言编程一般能拿多少工资 首页 > C语言 > 安庆c语言编程学习 作者:镀金池   发布时间:2017-10-18 15:20 假定我们 ...

  9. 汕头c语言培训班,汕头c语言编程学习,汕头学c语言编程哪个好,汕头学c语言编程需要报培训班吗...

    汕头c语言编程学习,汕头学c语言编程哪个好,汕头学c语言编程需要报培训班吗 首页 > C语言 > 汕头c语言编程学习 作者:镀金池   发布时间:2017-10-18 20:12 经历:若 ...

最新文章

  1. HDU2222(AC自动机模版题)
  2. Scrum企业实践-Leangoo敏捷工具
  3. PHPCMS最新版任意文件上传漏洞分析
  4. 依赖注入底层反射原理_PHP反射机制实现自动依赖注入
  5. composer 设置版本号_composer 安装及使用
  6. 【今日CV 计算机视觉论文速览】Thu, 7 Mar 2019
  7. 互联网公司面试必备综合篇
  8. java21天打卡day17-类2
  9. ArcGIS Server10.2服务启动不了之http://localhost:6080/arcgis/manager无法打开之arcMap 无法打开6080admin问题解决之路
  10. Linux中关机,重启,注销命令
  11. 内核初始化-从start_kernel到init
  12. PCB封装库命名规则
  13. 计算机多用户如何共享软件,电脑同屏软件
  14. CC2430DMA学习
  15. 我的折腾日记-- Ubuntu 16.04
  16. 毕设题目:Matlab车牌识别
  17. 剑指 Offer 42. 连续子数组的最大和(官解)
  18. nvcc -V和nvidia-smi中的cuda版本不同
  19. oracle 查找索引大小写,关于sql:Oracle中不区分大小写的搜索
  20. pycharm平台下的Django教程(初学者的最爱)

热门文章

  1. python中列表的声明,查询,修改,删除 del 和添加 append,insert
  2. java 在数组末尾添加元素和在任意位置删除元素
  3. 计算机网络基本实训报告,计算机网络实训报告.doc
  4. 昆虫记思维导图模板分享
  5. 天火同人 (易經大意 韓長庚)
  6. 常见的网络安全设备及功能汇总
  7. 如何构建有效的绩效管理(四)
  8. VMware Workstation pro无法在Windows上运行,检查可在Windows上运行的此应用的更新版本
  9. 基于Hive的搜狗搜索日志与结果Python可视化设计
  10. 邮箱POP3/SMTP设置(发送邮箱问题汇总)