C# Managed DirectX中的Device类

来源:互联网 发布:色情网页站 源码 wap 编辑:程序博客网 时间:2024/05/22 17:44

Device类把真实的图形卡从具体的硬件中抽象出来,在类中定义一组通用函数,这些函数将直接操作图形卡硬件。

Device类具有3个构造函数,这里介绍其中一个:

public Device(int adapter, DeviceType deviceType, Control renderWindow, CreateFlags bahaviorFlags, PresentParameters presentationParameters);

参数简析:


adapter

表示要使用哪个图形卡,默认的图形卡编号为0。


deviceType

表示要创建哪一种类型的设备。

DeviceType.Hardware,创建直接控制图形卡硬件的设备(要求图形卡支持DirectX)

DeviceType.Reference,设备类型为参考光栅器(reference rasterizer),软件模拟,运行速度慢

DeviceType.Software,自定义软件光栅器


renderWindow

表示在哪个窗口显示图形


behaviorFlags

CreateFlags.SoftwareVertexProcessing,3D图形所有顶点计算用软件处理

CreateFlags.HardwareVertexProcessing,所有顶点计算用GPU处理

CreateFlags.MixedVertexProcessing,根据最佳效果原则,进行选择

以上互斥,只能选其一,可以与以下参数组合

FPU_Preserve,使用双精度浮点数计算,速度减慢

MultiThreaded,使用多线程

PureDevice,要求所有计算尽可能使用GPU,只能和CreateFlags.HardwareVertexProcessing


PresentParameters类常用属性:

Windowed,false为全屏模式,true为窗口模式,使用Form类创建的Direct 3D程序,只能工作于窗口模式。

SwapEffect,用于控制后备缓存区和屏幕显示区交换的方式

SwapEffect.Flip:在图形卡的显存中建立多个和屏幕显示区同样大小的后备缓存区,修改了后备缓存区的数据后,指定其为屏幕显示区,就可以显示,只使用全屏模式

SwapEffect.Copy:只有一个后备缓存区,为了显示,需要复制后备缓存区数据到屏幕显示区

SwapEffect.Discard:与SwapEffect.Copy基本相同,但新帧到来后,后备缓存区中未处理完的数据将被丢弃

BackBufferCount,后备缓存的数量(1到3)

BackBufferFormat,记录颜色的格式

BackBufferWidth,每行单元数

BackBufferHeight,总行数

AutoDepthStencilFormat,指定深度缓存区单元的位数及格式,如DepthFormat.D16

EnableAutoDepthStencil,设置是否允许自动使用深度测试

DeviceWindowHandle,使用的窗口句柄,取值为null表示使用当前激活窗口


0 0
原创粉丝点击