D3D学习笔记1-D3D9设备的初始化
目录
创建D3D设备 IDirect3DDevice9 *
绘制框架
创建D3D设备 IDirect3DDevice9 *
D3D9设备的初始化步骤:
1.创建IDirect3D9对象
2.检查硬件
3.填充D3DPRESENT_PARAMETERS结构体
4.创建D3D设备
bool InitD3D(HWND hwnd, bool isFullScreen, D3DDEVTYPE deviceType, IDirect3DDevice9** device)
{//1.创建IDirect3D9对象IDirect3D9* pd3dp{ NULL };pd3dp = Direct3DCreate9(D3D_SDK_VERSION);if (!pd3dp){PrintDebugMsg("创建IDirect3D9对象失败\n");return false;}//2.检查硬件D3DCAPS9 caps;pd3dp->GetDeviceCaps(D3DADAPTER_DEFAULT, deviceType, &caps);int vp = 0;if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)//是否支持硬件vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;elsevp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;//3. 填充D3DPRESENT_PARAMETERS结构体D3DPRESENT_PARAMETERS d3dp;ZeroMemory(&d3dp, sizeof(d3dp));d3dp.BackBufferHeight = 768;d3dp.BackBufferWidth = 1024;d3dp.BackBufferFormat = D3DFMT_UNKNOWN;//后台缓存的像素点d3dp.BackBufferCount = 1;//后台缓存的个数d3dp.MultiSampleType = D3DMULTISAMPLE_NONE;d3dp.MultiSampleQuality = 0;d3dp.SwapEffect = D3DSWAPEFFECT_DISCARD;//交换链置换d3dp.hDeviceWindow = hwnd;//绘制的窗口d3dp.Windowed = isFullScreen;//是否全屏d3dp.EnableAutoDepthStencil = true;//是否创建维护深度缓存d3dp.AutoDepthStencilFormat = D3DFMT_D16;//深度缓冲区格式 如果 EnableAutoDepthStencil为false 则忽略该参数d3dp.Flags = 0;d3dp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;//刷新率d3dp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;// 交换频率/*ZeroMemory(&d3dp, sizeof(d3dp));d3dp.Windowed = TRUE;d3dp.SwapEffect = D3DSWAPEFFECT_DISCARD;d3dp.BackBufferFormat = D3DFMT_UNKNOWN;d3dp.EnableAutoDepthStencil = TRUE;d3dp.AutoDepthStencilFormat = D3DFMT_D16;d3dp.PresentationInterval = D3DPRESENT_INTERVAL_ONE;*///4.创建D3D设备HRESULT hr = pd3dp->CreateDevice(D3DADAPTER_DEFAULT,//显卡设备deviceType,//设备类型hwnd, //与D3D设备所关联的窗口句柄vp,//软件 / 硬件 运算方式&d3dp,//参数结构体device); //传出参数 IDirect3DDevice9*的指针if (FAILED(hr)){PrintDebugMsg("创建D3D9设备对象失败\n");pd3dp->Release();return false;}pd3dp->Release();return true;
}
绘制框架
if (g_d3dDevice){//1.缓冲区个数 2.指定清除缓冲区 3.清楚的是那些缓冲区(后台|深度) 4 5 6 ->用来那些值来清除相应的缓冲区 g_d3dDevice->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 255, 0), 1.0f, 0);//开始在后台缓冲区进行绘制g_d3dDevice->BeginScene();//结束后台缓冲区绘制g_d3dDevice->EndScene();//将后台缓冲区提交到前台g_d3dDevice->Present(0, 0, 0, 0);}
D3D学习笔记1-D3D9设备的初始化相关推荐
- 【学习笔记】硬件设备选型
--学习笔记摘自阅读学习<IT基础架构:系统运维实践>章节 [序言] 硬件平台是支撑生产系统运行的基础设施.随着企业的不断发展,应用负载和数据量在日益增加,只有搭建一套性能优良.稳定可靠的 ...
- 学习笔记——《LINUX设备驱动程序(第三版)》Linux设备模型:内核添加、删除设备、驱动程序
文章目录 1. 前言 2. 准备工作 2.1. 概念 2.2. 具体总线.设备.驱动结构体说明 2.3. 注册总线 3. 添加设备 3.1. STEP1 --发现设备并创建设备结构 struct XX ...
- 【DirectX11】【学习笔记(1)】初始化DirectX11
首先要涉及到的是Directx11环境的配置以及基础Win32程序框架的编写,这一部分和DirectX9.0是类似的. 这里就不再赘述,写完DirectX11后会再开一个DirectX9专栏,记录上述 ...
- D3D学习笔记之十---模型的载入
终于开始了3D里面最激动人的一刻,前面,我们一直在自己用程序定义顶点,然后在上色,或者再贴纹理,总是那么点东西,很不好看,也许大家会有这样的疑问,如果老是那么去画,复杂的模型我们怎么能画的出来?比如一 ...
- D3D学习笔记之十---模型的载入。
终于开始了3D里面最激动人的一刻,前面,我们一直在自己用程序定义顶点,然后在上色,或者再贴纹理,总是那么点东西,很不好看,也许大家会有这样的疑问,如果老是那么去画,复杂的模型我们怎么能画的出来?比如一 ...
- 树莓派学习笔记——wiringPi I2C设备使用详解
1.前言 最近认真学习了树莓派,从浅到深认真分析了wiringPi实现代码,借助树莓派学习linux收获颇丰.深入学习linux一段时间后发现它非常有魅力,一个简单的IO口输出操作尽有那么多的&quo ...
- 吴恩达深度学习笔记(21)-神经网络的权重初始化为什么要随机初始化?
随机初始化(Random+Initialization) 当你训练神经网络时,权重随机初始化是很重要的. 对于逻辑回归,把权重初始化为0当然也是可以的. 但是对于一个神经网络,如果你把权重或者参数都初 ...
- USB协议学习笔记 - CUSTOM HID 设备
简介 这里使用STM32平台进行USB 协议的学习与USB 设备的调试开发 USB HID设备,协议较固定,无法实现数据的自由接收与发送 USB CUSTOM HID设备(自定义HID协议)可以实现简 ...
- Linux内存从0到1学习笔记(6.7,物理内存初始化之CMA初始化)
写在前面 CMA (contiguous memory allocator)连续内存分配器,被开发用于分配大的.物理连续的内存块,其底层还是依赖内核伙伴系统这样的内存管理机制.通过这套机制,在设备驱动 ...
- 学习笔记-常见安全设备渗透方法
SecDevice - Exploits 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 大纲 身份与访问控制 堡垒机 IMC 网络检测 ...
最新文章
- 虚幻引擎5:从零开始的蓝图近战AI学习教程
- Git相关二三事(git reflog 和彩色branch)【转】
- Python与MySQL数据库的交互实战
- ElasticSearch基础杂烩-配置-索引-优化
- JS 中 this 的指向
- Linux开启动过程详解
- BOOST_PROTO_DEFINE_OPERATORS宏使用 std::vector<> 和 std::list 非原型类型来原型化表达式的示例
- 训练网络指定层pytorch实现方法
- 使用Excel公式,获取 全路径中 的 文件名
- 有关视图状态(ViewState)的一些问题
- Mac 苹果OS X小技巧:如何更改文件的默认打开方式
- Flutter动画系列之SizeTransition
- 骚操作“破解“App
- 教你如何拍好人像摄影
- mezzanine安装和使用
- 001-猫眼排行榜前100电影爬取【爬虫】【Python】
- 使用小波包变换分析信号的matlab程序,使用小波包变换分析信号的MATLAB程序(转)...
- pve 缩小LXC 磁盘
- 怎么彻底卸载office365?
- matlab的mcr问题,使用matlab时遇到的一些异常
热门文章
- 今日恐慌与贪婪指数为21 恐慌程度有所缓解
- Java使用二维码实现签到技术
- 什么电子邮箱正式?企业工作邮箱大全,一般白领用什么邮箱账号?
- 网贷黑名单查询,通过身份证号,或者手机号查询自己的网贷情况。
- 如何一周之内摸清一个行业?
- 异常:could not initialize proxy - the owning Session
- 设计模式---003代理模式(转载自我的老师 Alley-巷子)
- LeetCode 1101. The Earliest Moment When Everyone Become Friends
- BZOJ1777: [Usaco2010 Hol]rocks 石头木头
- iphone计算机怎么显示电话,苹果手机最近通话记录不显示怎么恢复