DirectX的一点小知识
来源:互联网 发布:猎杀潜航4修改数据 编辑:程序博客网 时间:2024/05/16 09:41
今天写一些DirectX的常用结构,和大家分享也便于以后回顾。
1.表面:IDirect3DSurface9
表面就是一个像素点阵,用于存储2D图像数据。就是一个像素的线性数组。
LockRect()方法使我们可以获得指向表面内存的指针,通过指针运算,我们可以对表面上任一像素进行读写操作。
UnlockRect()方法即给表面解锁。
GetDesc()方法使我们可以得到一个D3DSURFACE_DESC结构,用以返回表面的描述信息。
2.Multisampling
当使用像素矩阵表示图形时,显示时可能会出现锯齿状,Multisampling就是使其平滑的技术,好像应该叫全屏抗锯齿技术。
D3DMULTISAMPLE_TYPE用来指定全屏抗锯齿的等级。
D3DMULTISAMPLE_NONE-------------------------------------------------------不使用全屏抗锯齿
D3DMULTISAMPLE_1_SAMPLE…D3DMULTISAPLE_16_SAMPLE--------设定1~16的等级
全屏抗锯齿技术会大大降低程序的运行速度,而且在使用之前需要判断显卡是否支持(IDirect3D9::CheckDeviceMultisampleType)。
3.像素格式
当我们要创建表面或纹理时,经常需要指定Direct3D资源的像素格式。它是由D3DFORMAT枚举类型定义的,下面是常用的类型:
D3DFMT_R8G8B8: 表示一个24位像素,从左到右,8位表示红色,8位表示绿色,8位表示蓝色。
D3DFMT_X8R8G8B8: 表示一个32位像素,从左到右,8位保留不用,8位表示红色,8位表示绿色,8位表示蓝色。
D3DFMT_A8R8G8B8: 表示一个32位像素,从左到右,8位为ALPHA通道,8位表示红色,8位表示绿色,8位表示蓝色。
这是目前常用的像素格式,但在使用前仍需要检测显卡是否支持。
4.内存池
表面,纹理和其他一些Direct3D资源被放在多种内存池中,内存池的种类由D3DPOOL类型来指定。
D3DPOOL_DEFAULT:表示根据资源的类型和用途把它们放在最合适的地方。注意:这种资源必须要在IDirect3DDevice9::Reset被调用之前销毁,再次使用时需要重新初始化。
D3DPOOL_MANAGED:资源将由Direct3D管理并按照设备的需要来指定放在显存或是内存。
D3DPOOL_SYSTEMMEM:指定资源放在系统内存中。
D3DPOOL_SCRATCH:指定资源放在系统内存中,它与D3DPOOL_SYSTEMMEM的不同在于使用这些资源不必受图形设备的限制。
5.深度缓冲
深度缓冲也是一个表面,但它不是用来存储图像数据的,而是用来记录像素的深度信息。深度缓冲为每个像素计算深度值,并进行深度测试,比较哪个像素离照相机更近。这样就可以只绘制最靠近照相机的像素,被遮住的像素就不会被画出来。
- DirectX的一点小知识
- ios的一点小知识
- 线程的一点小知识
- ffmpeg的一点小知识
- 数据库的一点小知识
- directx fullscreen应用独占模式的一点小说明
- UNICODE、DBCS的一点小知识
- Linux中scp的一点小知识
- UNICODE、DBCS的一点小知识
- 关于隧道的一点小知识
- UNICODE、DBCS的一点小知识
- c编译的一点小知识
- 一点JavaBeans的入门小知识
- 关于excel开发的一点小知识
- ibatis中CDATA的一点小知识
- 表列有默认值的一点小知识
- ibatis中<![CDATA[的一点小知识
- 编程时的一点小知识
- 分享一个UML类图的图示样例
- 当“山寨文化”风行网络,我们是追捧还是打杀? Simulated Culture is largely emerging on the internet, and should we follow or force it our?
- 在asp.net 2.0中使用SqlBulkCopy类迁移数据
- js控制框架
- Windows 2003服务器集群配置
- DirectX的一点小知识
- 控件工具栏不能自动弹出怎么办
- 基于Hibernate3.2 Hibernate tools 的使用
- 文本安装everest linux
- Hibernate常见的20个问题
- [VB.NET]如何在Datagridview中进行列间的计算?
- [VB.NET]VB2005中有Table控件吗?
- [VB.NET]如何将DataGridView中的数据存入Excel文件中?
- [VB.NET]TabControl与DataGridView能并用吗 求助