阿辉DirectX 11学习笔记二

上一小节任务完成了窗口初始化的任务,接下来将完成初始化Direct3D的任务,如下:
1. 定义我们想要检查的设备类型和特征级别;
2. 创建Direct3D设备,渲染环境和交换链;
3. 创建渲染对象;
4. 设置视口观察区;
5. 屏幕的清除和显示;

定义我们想要检查的设备类型和特征级别:

在Direct3D11中我们可以使用四种设备类型和三种特征级别,他们的名称和作用分别如下:
硬件设备:运行在图形硬件上的D3D设备,在所有设备中时最快的;
引用设备:用于在CPU上执行图形硬件所不支持的特性渲染,换句话说,就是在软件中完全模拟硬件计算。
软件驱动设备:允许开发者编写自己的渲染驱动用于Direct3D中;
WARP设备:高效CPU渲染设备,可模拟Direct3D的全部特性。

具体代码:
RECT dimensions;
GetClientRect(hwnd,&dimensions);

unsigned int width=dimensions.right-dimensions.left;
unsigned int height=dimensions.bottom-dimensions.top;

//驱动类型
D3D_DRIVER_TYPE driverTypes[]=
{
    D3D_DRIVER_TYPE_HARDWARE,D3D_DRIVER_TYPE_WARP,
    D3D_DRIVER_TYPE_REFERENCE,D3D_DRIVER_TYPE_SOFTWARE
};
unsigned int totalDriverTypes=ARRAYSIZE(driverTypes);//返回设备类型的数目
//特征级别
D3D_FEATURE_LEVEL featureLevels[]=
{
    D3D_FEATURE_LEVEL_11_0,
    D3D_FEATURE_LEVEL_10_1,
    D3D_FEATURE_LEVEL_10_0
};
unsigned int totalFeatureLevels=ARRAYSIZE(featureLevels);//返回特征级别的数目
解释:

RECT:用来存储成对出现的参数;
GetClientRect:获得客户用户区的坐标;
D3D_DRIVER_TYPE:设备驱动类型;
D3D_FEATURE_TYPE: 特征级别类型

创建Direct3D设备,渲染环境和交换链:

交换链是设备中渲染目标的集合,所谓渲染目标,就是你想将目的窗口渲染为何种风格,所以首先我们要初始化交换链,确定风格:
具体代码:

DXGI_SWAP_CHAIN_DESC swapChainDesc;
ZeroMemory(&swapChainDesc,sizeof(swapChainDesc));//用0来填充某一存储区,第一个参数代表填充的起始地址,第二个参数代表填充的长度
swapChainDesc.BufferCount=1;//缓存页的数量
swapChainDesc.BufferDesc.Width=width;//缓存页的宽度
swapChainDesc.BufferDesc.Height=height;//缓存页的高度
swapChainDesc.BufferDesc.Format=DXGI_FORMAT_R8G8B8A8_UNORM;//缓存格式
swapChainDesc.BufferDesc.RefreshRate.Numerator=60;//刷新率的分子
swapChainDesc.BufferDesc.RefreshRate.Denominator=1;// 刷新率的分母
swapChainDesc.BufferUsage=DXGI_USAGE_RENDER_TARGET_OUTPUT;//缓存器的使用方法
swapChainDesc.OutputWindow=hwnd;//窗口句柄
swapChainDesc.Windowed=true;//是否在全屏模式中D3D继续原来的尺寸还是resize
swapChainDesc.SampleDesc.Count=1;//取样数量
swapChainDesc.SampleDesc.Quality=0;//取样质量

然后,我们需要告诉硬件我们需要渲染怎样的一个环境,设备又是如何去渲染的。针对这,我们有三个工作要做:
创建Direct3D设备:一种用于自身与硬件通信的设备;
渲染环境:一种告诉设备怎样去绘制的渲染环境;
创建交换链:绘制怎样的环境;

具体代码:
unsigned int creationFlags=0;

#ifdef _DEBUG
    creationFlags|=D3D11_CREATE_DEVICE_DEBUG;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值