初始化Direct3D
来源:互联网 发布:多线程添加数据 编辑:程序博客网 时间:2024/06/05 17:26
IDirect3D9* _d3d9;
_d3d9 = Direct3DCreate9(D3D_SDK_VERSION);//Direct3DCreate9的唯一一个参数总是D3D_SDK_VERSION
D3DCAPS9 caps;
d3d9->GetDeviceCaps( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);
// 是否可以使用硬件顶点处理?
int vp = 0;
if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
{
// 是,支持硬件顶点处理
vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;
}
else
{
// 不,只能用软件顶点处理
vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
}
D3DDISPLAYMODE d3ddm;
if( FAILED( m_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT,&d3ddm ) ) )//查询显示卡的显示模式
{
MessageBox(NULL,L"GetAdapterDisplayMode时失败",L"信息",MB_OK);
return E_FAIL;
}
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
if( !FAILED( m_pD3D->CheckDeviceMultiSampleType( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8, FALSE, D3DMULTISAMPLE_4_SAMPLES, NULL ) ) )
d3dpp.MultiSampleType = D3DMULTISAMPLE_4_SAMPLES;
IDirect3DDevice9* device = 0;
hr = d3d9->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, vp, &d3dpp, &device);
if( FAILED(hr) )
{
::MessageBox(0, "CreateDevice() - FAILED", 0, 0);
return 0;
}
//以下为该章所用到的函数,枚举,结构体,宏
Direct3DCreate9(D3D_SDK_VERSION);
HRESULT IDirect3D9::GetDeviceCaps(
UINT Adapter,//指定要获得哪个显示适配器的特性
D3DDEVTYPE DeviceType,//指定设备类型(硬件设备(D3DDEVTYPE_HAL),软件设备(D3DDEVTYPE_REF))
D3DCAPS9 *pCaps//返回一个已初始化的D3DCAPS9结构
);
HRESULT CheckDeviceMultiSampleType//检查当前设备是否支持图形多重采样
(
UINT Adapter, //表示当前查询的硬件的序号,通常以D3DADAPTER_DEFAULT表示对系统当前默认使用的图形显示硬件查询
D3DDEVTYPR DeviceType, //表示当前查询的设备类型
D3DFORMAT SurfaceFarmat, //表示需要查询的渲染表面像素显示格式
BOOL Windowed, //是否使用窗口显示
D3DMULTISAMPLE_TYPE MultSampleType, //表示需要查询的多重采样方法
DWORD* pQunlityLevels //存储返回的图形质量数值
)
HRESULT IDirect3D9::CreateDevice(
UINT Adapter,//指定对象要表示的物理显示设备
D3DDEVTYPE DeviceType,//设备类型
HWND hFocusWindow;
DWORD BehaviorFlags,//设定为D3DCREATE_SOFTWARE_VERTEXPROCESSING或者D3DCREATE_HARDWARE_VERTEXPROCESSING
D3DPRESENT_PARAMETERS *pPresentationParameters,//l 指定一个已经初始化好的D3DPRESENT_PARAMETERS实例
IDirect3DDevice9** ppReturnedDeviceInterface//返回创建的设备
);
HRESULT IDirect3DDevice9::Clear(
DWORD Count,//pRects组中的矩形的个数
const D3DRECT* pRects,//将要清除的屏幕矩形的数组,这使我们可以清除屏幕的某一部分
DWORD Flags,//指定在哪些表面上执行清除表面的操作
D3DCOLOR Color,//使用什么颜色填充清除的表面.D3DCLEAR_TARGET——目的表面,通常为后备表面, D3DCLEAR_ZBUFFER——深度缓冲,D3DCLEAR_STENCIL— —模版缓冲
float Z,//设置深度缓冲的值
DWORD Stencil//设置模版缓冲的值
);
typedef struct _D3DPRESENT_PARAMETERS_ {
UINT BackBufferWidth;//后备缓冲表面的宽度(以像素为单位)
UINT BackBufferHeight;//后备缓冲表面的高度(以像素为单位)
D3DFORMAT BackBufferFormat;//后备缓冲表面的像素格式(如:32位像素格式为D3DFMT——A8R8G8B8)
UINT BackBufferCount;//后备缓冲表面的数量,通常设为“1”,即只有一个后备表面
D3DMULTISAMPLE_TYPE MultiSampleType//多重采样类型
DWORD MultiSampleQuality;//多重采样的质量等级
D3DSWAPEFFECT SwapEffect;//指定表面在交换链中是如何被交换的,取D3DSWAPEFFECT枚举类型中的一个成员。其中D3DSWAPEFFECT_DISCARD是最有效的
HWND hDeviceWindow;//与设备相关的窗口句柄,你想在哪个窗口绘制就写那个窗口的句柄
BOOL Windowed;//设为true则为窗口模式,false则为全屏模式
BOOL EnableAutoDepthStencil;//设为true,D3D将自动创建深度/模版缓冲
D3DFORMAT AutoDepthStencilFormat;//深度/模版缓冲的格式
DWORD Flags;//深度/模版缓冲的格式
UINT FullScreen_RefreshRateInHz;//刷新率,设定D3DPRESENT_RATE_DEFAULT使用默认刷新率
UINT PresentationInterval;
} D3DPRESENT_PARAMETERS;
typedef enum _D3DMULTISAMPLE_TYPE//多重采样类型枚举
{
D3DMULTISAMPLE_NONE = 0,
D3DMULTISAMPLE_NONMASKABLE = 1,
D3DMULTISAMPLE_2_SAMPLES = 2,
D3DMULTISAMPLE_3_SAMPLES = 3,
D3DMULTISAMPLE_4_SAMPLES = 4,
D3DMULTISAMPLE_5_SAMPLES = 5,
D3DMULTISAMPLE_6_SAMPLES = 6,
D3DMULTISAMPLE_7_SAMPLES = 7,
D3DMULTISAMPLE_8_SAMPLES = 8,
D3DMULTISAMPLE_9_SAMPLES = 9,
D3DMULTISAMPLE_10_SAMPLES = 10,
D3DMULTISAMPLE_11_SAMPLES = 11,
D3DMULTISAMPLE_12_SAMPLES = 12,
D3DMULTISAMPLE_13_SAMPLES = 13,
D3DMULTISAMPLE_14_SAMPLES = 14,
D3DMULTISAMPLE_15_SAMPLES = 15,
D3DMULTISAMPLE_16_SAMPLES = 16,
D3DMULTISAMPLE_FORCE_DWORD = 0x7fffffff
} D3DMULTISAMPLE_TYPE;
- 初始化Direct3D
- 初始化Direct3D
- 初始化Direct3D
- 初始化Direct3D
- Direct3D 初始化
- Direct3D 初始化
- Direct3D初始化
- 初始化Direct3D
- Direct3D初始化
- 初始化Direct3D
- 第一章:Direct3D的初始化
- 初始化Direct3D窗口
- Direct3D的初始化
- Direct3D的初始化
- Direct3D的初始化
- Direct3D 11的初始化
- Viscual C++ + Direct3D 初始化
- 1 初始化Direct3D
- 全局变量和局部变量在内存里的区别
- poj 3778 hdu 3412 An Odd Award Rule
- OGRE最小程序
- sql ntext數據類型字符替換
- MySql
- 初始化Direct3D
- Nginx中的server_name指令特性讲解
- 鼠标移动到指定位置,弹出层
- 使用iconv命令轻松实现linux下字符集编码的转换
- iPhone/Mac 针对内存管理的代码规范
- C++对象构造函数与析构函数的调用时间问题
- 网友盘点大陆十大“缺德”行业
- 利用Nginx架设Http代理服务器
- C/C++实现冒泡法排序