bool initD3D(HWND hWnd)
{ // 主要目的是获取设备,为调用下面的函数做很多准备。
// 比如 获取IDirect3D9 ,获取支持的顶点处理,填充后备缓冲相关参数等。 // IDirect3D9::CreateDevice(
//UINT Adapter,
//D3DDEVTYPE DeviceType,
//HWND hFocusWindow,
//DWORD BehaviorFlags,
//D3DPRESENT_PARAMETERS *pPresentationParameters,
//IDirect3DDevice9 ** ppReturnDeviceInterface
//); // 第一步 获取 IDirect3D9 接口
// Direct3DCreate9(D3D_SDK_VERSION);
pD3D = Direct3DCreate9(D3D_SDK_VERSION);
if (NULL == pD3D)
{
MessageBox(NULL,TEXT("NULL == pD3D"),NULL,MB_OK);
return false;
}
// 第二步 确定显卡是否支持顶点转换和光照
// 通过获取设备性能,里面包含顶点处理,纹理,shader等信息。
// pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&caps)
// caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT
D3DCAPS9 caps;
pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&caps); int vp = ;
if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
{
vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;
}
else
{
vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
} // 第三步 填充显示参数,主要是和后备缓冲相关的设置。
D3DPRESENT_PARAMETERS d3dpp;
d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;
d3dpp.BackBufferCount = ;
d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
d3dpp.BackBufferHeight = SCREEN_H;
d3dpp.BackBufferWidth = SCREEN_W;
d3dpp.EnableAutoDepthStencil = true;
//d3dpp.FullScreen_RefreshRateInHz = 0; // 屏幕刷新频率,默认值即可
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; // 屏幕刷新频率,默认值即可
d3dpp.Windowed = true;
d3dpp.hDeviceWindow = hWnd; // 窗口句柄。
d3dpp.MultiSampleQuality = ;
d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
//d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
// D3DPRESENT_INTERVAL_IMMEDIATE 图形绘制完后立即显示,实时的,可以提高帧率,但过快会产生图形撕裂。
// D3DPRESENT_INTERVAL_DEFAULT 则需等待屏幕刷新完后绘制
d3dpp.Flags = ; // 附加特性一般为0. // d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; // 这个一定要赋值(即使初始化为0),枚举值从1开始
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY; // 这个一定要赋值(即使初始化为0),枚举值从1开始
//d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP; // 这个一定要赋值(即使初始化为0),枚举值从1开始
// 使用FLIP 屏幕有很强的抖动,难道是交换链的切换和显示不同步所致??。
// // 第四步 创建设备。 // IDirect3D9::CreateDevice(
//UINT Adapter,
//D3DDEVTYPE DeviceType,
//HWND hFocusWindow,
//DWORD BehaviorFlags,
//D3DPRESENT_PARAMETERS *pPresentationParameters,
//IDirect3DDevice9 ** ppReturnDeviceInterface
//); pD3D->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
vp,
&d3dpp,
&pD3DDev
); if (NULL == pD3DDev)
{
MessageBox(NULL,TEXT("NULL == pD3DDev"),NULL,MB_OK);
return false;
} return true;
}

初始化D3D设备的更多相关文章

  1. D3D游戏降帧的动态创建D3D设备以及ShellCode HOOK玩法

    欢迎转载,转载请注明出处:http://blog.csdn.net/gnorth/article/details/9327971 说白了,也就是HOOK掉Present,这种代码,其实百度上某些地方有 ...

  2. “vmware 未能初始化监视器设备”的解决方法

    从挂起状态唤醒时出现"vmware 未能初始化监视器设备"的提示,在cmd中输入命令 net start vmci net start vmx86 可能还不能成功启动,提示&quo ...

  3. CUDA中自动初始化显卡设备宏

    每次为了减少初始化的工作量,可以写入下面的宏. #define CUT_DEVICE_INIT(ARGC,ARGV){ \ int deviceCount; \ CUDA_SAFE_CALL_NO_S ...

  4. linux内核源码分析 - nvme设备的初始化

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本文基于3.18.3内核的分析,nvme设备为pcie接口的ssd,其驱动名称为nvme.ko,驱动代码在dri ...

  5. D3D 光照和材料 小样例

    1.实现一个旋转的圆柱体,体现d3d光照效果 2.程序实现 #pragma once #pragma comment(lib,"winmm.lib") #pragma commen ...

  6. DX11 Without DirectX SDK--01 DirectX11初始化

    回到 DirectX11--使用Windows SDK来进行开发 由于个人觉得龙书里面第4章提供的Direct3D 初始化项目封装得比较好,而且DirectX SDK Samples里面的初始化程序过 ...

  7. DirectX11 With Windows SDK--01 DirectX11初始化

    前言 由于个人觉得龙书里面第4章提供的Direct3D 初始化项目封装得比较好,而且DirectX SDK Samples里面的初始化程序过于精简,不适合后续使用,故选择了以Init Direct3D ...

  8. 使用MFC做D3D的框架

    转载请注明出处http://www.cnblogs.com/CAION/p/3192111.html (程序运行时是和其他程序挺像 = =,但我保证这是原创的) 1.将D3D的初始化,渲染等等一些行为 ...

  9. DirectX9:第一章 初始化Direct3D

    一.Direct3D概述 Direct3D是一套底层图形API,可以被视为应用程序与图形设备交互的中介. 应用程序.Direct3D以及硬件之间的交互关系: 在Direct3D和图形设备之间有一个环节 ...

随机推荐

  1. 教您如何使用MySQL group_concat函数

    MySQL group_concat函数是典型的字符串连接函数,下面就为您介绍MySQL group_concat的语法,希望对您学习MySQL group_concat函数有所帮助. MySQL g ...

  2. 单纯形法C++实现

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4156685.html 使用单纯型法来求解线性规划,输入单纯型法的松弛形式,是一个大矩阵,第一 ...

  3. VS2010 常见错误总结

    错误一:“此时无足够的可用内存,无法满足操作的预期要求,可能是由于虚拟地址空间碎片造成的,请稍后重试” 安装VS2010补丁:http://xiazai.jb51.net/201007/tools/V ...

  4. 用CSS和第三方库来提升图片浏览体验

    你是否关注过浏览.点击图片这个微妙的过程,不同的图片展现.交互方式各带来什么样的观感?本文聚焦于图片浏览这个过程以及如何使用CSS3和第三方库来提升体验. 先看下Pinterest.Flickr等时下 ...

  5. ubuntu更新源,简单两步搞定

    1.启动器中打开Ubuntu软件中心 2.鼠标顶部面板点击编辑选择软件源(163.sohu) 搞定!

  6. Mindjet.MindManager“参数错误”解决办法,适用于9.0、10.0和14.0

    MindManager出14.0版本了,但是在应用个别模板的时候会提示“参数错误”,然后自动关闭. 解决办法:   如果是win7系统,可以进入C:\Users\(用户名) \AppData\Loca ...

  7. Spark小课堂Week1 Hello Spark

    Spark小课堂Week1 Hello Spark 看到Spark这个词,你的第一印象是什么? 这是一朵"火花",官方的定义是Spark是一个高速的.通用的.分布式计算系统!!! ...

  8. Speech Patterns (string)

    People often have a preference among synonyms of the same word. For example, some may prefer "t ...

  9. EXTJS 4.2 日期控件

    { xtype: "fieldcontainer", layout: "hbox", items: [{ fieldLabel: '开始时间', name: ' ...

  10. random note

    今天才慢慢意识到,什么才是学习,(以思考解决问题为驱动),埋头刷分只是方法,不是目的和原动力. 既然准备读研,就要慢慢去了解研究生的生活学习方式是什么样的,涉及到哪些方面. 读研之前要选好方向,但是现 ...