目录

创建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设备的初始化相关推荐

  1. 【学习笔记】硬件设备选型

    --学习笔记摘自阅读学习<IT基础架构:系统运维实践>章节 [序言] 硬件平台是支撑生产系统运行的基础设施.随着企业的不断发展,应用负载和数据量在日益增加,只有搭建一套性能优良.稳定可靠的 ...

  2. 学习笔记——《LINUX设备驱动程序(第三版)》Linux设备模型:内核添加、删除设备、驱动程序

    文章目录 1. 前言 2. 准备工作 2.1. 概念 2.2. 具体总线.设备.驱动结构体说明 2.3. 注册总线 3. 添加设备 3.1. STEP1 --发现设备并创建设备结构 struct XX ...

  3. 【DirectX11】【学习笔记(1)】初始化DirectX11

    首先要涉及到的是Directx11环境的配置以及基础Win32程序框架的编写,这一部分和DirectX9.0是类似的. 这里就不再赘述,写完DirectX11后会再开一个DirectX9专栏,记录上述 ...

  4. D3D学习笔记之十---模型的载入

    终于开始了3D里面最激动人的一刻,前面,我们一直在自己用程序定义顶点,然后在上色,或者再贴纹理,总是那么点东西,很不好看,也许大家会有这样的疑问,如果老是那么去画,复杂的模型我们怎么能画的出来?比如一 ...

  5. D3D学习笔记之十---模型的载入。

    终于开始了3D里面最激动人的一刻,前面,我们一直在自己用程序定义顶点,然后在上色,或者再贴纹理,总是那么点东西,很不好看,也许大家会有这样的疑问,如果老是那么去画,复杂的模型我们怎么能画的出来?比如一 ...

  6. 树莓派学习笔记——wiringPi I2C设备使用详解

    1.前言 最近认真学习了树莓派,从浅到深认真分析了wiringPi实现代码,借助树莓派学习linux收获颇丰.深入学习linux一段时间后发现它非常有魅力,一个简单的IO口输出操作尽有那么多的&quo ...

  7. 吴恩达深度学习笔记(21)-神经网络的权重初始化为什么要随机初始化?

    随机初始化(Random+Initialization) 当你训练神经网络时,权重随机初始化是很重要的. 对于逻辑回归,把权重初始化为0当然也是可以的. 但是对于一个神经网络,如果你把权重或者参数都初 ...

  8. USB协议学习笔记 - CUSTOM HID 设备

    简介 这里使用STM32平台进行USB 协议的学习与USB 设备的调试开发 USB HID设备,协议较固定,无法实现数据的自由接收与发送 USB CUSTOM HID设备(自定义HID协议)可以实现简 ...

  9. Linux内存从0到1学习笔记(6.7,物理内存初始化之CMA初始化)

    写在前面 CMA (contiguous memory allocator)连续内存分配器,被开发用于分配大的.物理连续的内存块,其底层还是依赖内核伙伴系统这样的内存管理机制.通过这套机制,在设备驱动 ...

  10. 学习笔记-常见安全设备渗透方法

    SecDevice - Exploits 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 大纲 身份与访问控制 堡垒机 IMC 网络检测 ...

最新文章

  1. 虚幻引擎5:从零开始的蓝图近战AI学习教程
  2. Git相关二三事(git reflog 和彩色branch)【转】
  3. Python与MySQL数据库的交互实战
  4. ElasticSearch基础杂烩-配置-索引-优化
  5. JS 中 this 的指向
  6. Linux开启动过程详解
  7. BOOST_PROTO_DEFINE_OPERATORS宏使用 std::vector<> 和 std::list 非原型类型来原型化表达式的示例
  8. 训练网络指定层pytorch实现方法
  9. 使用Excel公式,获取 全路径中 的 文件名
  10. 有关视图状态(ViewState)的一些问题
  11. Mac 苹果OS X小技巧:如何更改文件的默认打开方式
  12. Flutter动画系列之SizeTransition
  13. 骚操作“破解“App
  14. 教你如何拍好人像摄影
  15. mezzanine安装和使用
  16. 001-猫眼排行榜前100电影爬取【爬虫】【Python】
  17. 使用小波包变换分析信号的matlab程序,使用小波包变换分析信号的MATLAB程序(转)...
  18. pve 缩小LXC 磁盘
  19. 怎么彻底卸载office365?
  20. matlab的mcr问题,使用matlab时遇到的一些异常

热门文章

  1. 今日恐慌与贪婪指数为21 恐慌程度有所缓解
  2. Java使用二维码实现签到技术
  3. 什么电子邮箱正式?企业工作邮箱大全,一般白领用什么邮箱账号?
  4. 网贷黑名单查询,通过身份证号,或者手机号查询自己的网贷情况。
  5. 如何一周之内摸清一个行业?
  6. 异常:could not initialize proxy - the owning Session
  7. 设计模式---003代理模式(转载自我的老师 Alley-巷子)
  8. LeetCode 1101. The Earliest Moment When Everyone Become Friends
  9. BZOJ1777: [Usaco2010 Hol]rocks 石头木头
  10. iphone计算机怎么显示电话,苹果手机最近通话记录不显示怎么恢复