1. 初始化

a. 获得IDirect3D9 接口的指针

b. 检查设备(显卡)的能力, D3DCAPS9

c. 初始化D3DPRESENT_PARAMETERS结构,这个结构是为下一步服务的

d. 基于D3DPRESENT_PARAMETERS结构,创建IDirect3DDevice9

相关代码:

  
 IDirect3DDevice9* Device = 0; HRESULT hr = 0;// Step 1: Create the IDirect3D9 object.IDirect3D9* d3d9 = 0;d3d9 = Direct3DCreate9(D3D_SDK_VERSION);if( !d3d9 ){::MessageBox(0, _T("Direct3DCreate9() - FAILED"), 0, 0);return false;}// Step 2: Check for hardware vp.D3DCAPS9 caps;d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, deviceType, &caps);int vp = 0;if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;elsevp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;// Step 3: Fill out the D3DPRESENT_PARAMETERS structure.D3DPRESENT_PARAMETERS d3dpp;d3dpp.BackBufferWidth            = 640;d3dpp.BackBufferHeight           = 480;d3dpp.BackBufferFormat           = D3DFMT_A8R8G8B8;d3dpp.BackBufferCount            = 1;d3dpp.MultiSampleType            = D3DMULTISAMPLE_NONE;d3dpp.MultiSampleQuality         = 0;d3dpp.SwapEffect                 = D3DSWAPEFFECT_DISCARD; d3dpp.hDeviceWindow              = hwnd;d3dpp.Windowed                   = windowed;d3dpp.EnableAutoDepthStencil     = true; d3dpp.AutoDepthStencilFormat     = D3DFMT_D24S8;d3dpp.Flags                      = 0;d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;d3dpp.PresentationInterval       = D3DPRESENT_INTERVAL_IMMEDIATE;// Step 4: Create the device.hr = d3d9->CreateDevice(D3DADAPTER_DEFAULT, // primary adapterD3DDEVTYPE_HAL,         // device typehwnd,               // window associated with devicevp,                 // vertex processing&d3dpp,             // present parametersdevice);            // return created deviced3dpp.Release();

上面代码的执行结果就是生成一个窗口, 得到了一个IDirect3DDevice9。

注:这里省略了Windows 32窗体的生成过程

2. 画面的现实

在上面我们得到了一个IDirect3DDevice9, 我们就可以用此device进行画图等操作。

bool Display()
{if( Device ) // Only use Device methods if we have a valid device.{// Instruct the device to set each pixel on the back buffer black -// D3DCLEAR_TARGET: 0x00000000 (black) - and to set each pixel on// the depth buffer to a value of 1.0 - D3DCLEAR_ZBUFFER: 1.0f.Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0);// Swap the back and front buffers.Device->Present(0, 0, 0, 0);}return true;
}

这样一个可以画图的device就形成了

转载于:https://www.cnblogs.com/sld666666/archive/2010/08/19/1803974.html

Direct3D学习笔记相关推荐

  1. direct3D 学习笔记

    DirectX SDK 2006学习笔记1--框架 2008-01-31 13:20 友情提醒:所谓的框架是指SDK目录下/Samples/C++/Common路径下的DXUT系列函数包装.学习框架的 ...

  2. direct3D 学习笔记【转】

    DirectX SDK 2006学习笔记1--框架 2008-01-31 13:20 友情提醒:所谓的框架是指SDK目录下\Samples\C++\Common路径下的DXUT系列函数包装.学习框架的 ...

  3. Direct3D学习笔记(二)——精灵动画(Sprite)

    使用精灵表 精灵表,就是一个包含了多个图片单元的平铺的图像. 我们需要做的就是,算出图片单元的左上角在位图图像中为止,然后从图像中按照精灵的宽度和高度复制出一个源矩形来. 使用这个技术绘制单个帧,我们 ...

  4. Direct3D学习笔记(一)——精灵(Bomo_catcher游戏)

    一.Visual Studio 2015设置 1.Bomo_Catcher属性-常规-字符集-使用多字节字符集 2.Bomo_Catcher属性- VC++目录-包含目录 C:\Program Fil ...

  5. 一、D3D12学习笔记——初始化Direct3D

    首先声明,本人是自学DX12,有很多的理解也许不到位,不过都是自己的理解.在很长一段时间里边,我从迷茫到有一天开始能看懂,现在是第三次开始刷DX12了,于是在此表明写作的初衷: 1.有一些DX12的学 ...

  6. DirectX 3D学习笔记(一)

    DirectX 3D学习笔记(一) Ⅰ.渲染状态 设备的渲染状态控制Direct3D设备的光栅化组件的行为.通过改变光栅渲染状态属性,可以设置使用何种方式来进行渲染着色,以及如何进行雾化等. 在Dir ...

  7. Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示

    Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示 zouxy09@qq.com http://blog.csdn.net/zouxy09 我的Kinect开发平台是: Win7 x86 ...

  8. AI学习笔记(五)坐标变换与视觉测量

    AI学习笔记之坐标变换与视觉测量 左右手坐标系即转换 左手坐标系.右手坐标系.笛卡尔坐标系 左手旋转规则.右手旋转规则 左手坐标系和右手坐标系相互转换 旋转矩阵 欧拉角与万向锁 欧拉角 万向锁 四元数 ...

  9. 逐梦旅程学习笔记 DirectX开发入门01:应用程序基本框架

    本文属于<逐梦旅程>学习笔记系列的DirectX篇,与此系列的Windows/GDI并列. 本系列不打算深入研究DirectX而只是简单介绍DirectX中应用最广泛的部分:Direct3 ...

  10. DX11龙书学习笔记---渲染管线

    DX11龙书学习笔记---渲染管线 1.输入装配阶段 - 顶点 - 图元拓扑 - 点列表 - 线带 - 线列表 - 三角形带 - 三角形列表 - 带有邻接信息的图元 - 控制点面片列表 - 索引 2. ...

最新文章

  1. blktrace 工具集使用 及其实现原理
  2. 【FFmpeg】ffmpeg工具源码分析(一):main函数
  3. 自动机器学习新进展!性能超过人类调参师6个点,AutoGluon 低调开源
  4. Nmap UDP扫描缓慢问题探究(无结果)
  5. 在jekyll模板博客中添加网易云模块
  6. 马丁 福勒 Martin Fowler 关于依赖注入和反转控制的区别
  7. LeetCode 984. 不含 AAA 或 BBB 的字符串(贪心)
  8. 【算法分析与设计】基本算法设计方法的思想策略
  9. Hyper-V损坏数据恢复报告
  10. 开源协议栈 rlc rrc_LTE的组网架构与接口协议
  11. PannerNode
  12. 画时序图软件 TimeGen 3.2 TimingDesigner 9.103 AndyTiming
  13. 关于在项目中使用开源项目的疑惑,恳请大家给点意见!
  14. [转载] 5.2 calendar--通用日期的相关函数(4)
  15. 3Dmax如何展UV
  16. HTML5七夕情人节表白网页(爱情树 Html5实现唯美表白动画代码) HTML+CSS+JavaScript
  17. java中修改上传图片大小,springMVC MultipartFile 上传图片时修改图片大小
  18. Effective-MultiType
  19. 通讯:春运中的墨西哥“乘务员”
  20. 如何在Android上玩经典复古游戏

热门文章

  1. 2021-0409梦笔记
  2. LINUX下载编译libpq(postgresql)
  3. 安装MinGW-W64提示cannot download repository.txt
  4. debian的中国镜像
  5. 泰山游记:晚上爬并无乐趣,什么也看不到
  6. android 热更新jar,Android热更新之so库的热更新
  7. vscode 开发maven项目(springboot项目)
  8. 开两个服务内存溢出_详解JVM内存区域
  9. 七月老师python_七月在线Python数据分析入门
  10. 数据结构详解之栈和队列