Directx3D9学习之一:环境搭建与运行第一个程序环境配置(基于VS2012与win7)
作者:lhqsine
一、搭建《DIRECTX.9.0.3D游戏开发编程基础》开发环境与第一个程序
1、下载directX库
vs2012以后的版本都集成了基本的directx库,所以如果不需要用到directx3D的扩展库(例如d3dx8~11.lib),则可以直接使用。但是龙书中则用到了d3dx9.lib库,因此还是需要下载微软的DirectX Software Development Kit,下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=6812。
2、安装directX
直接安装即可,假如你先安装了vs2012,则安装到最后会有个报错,这个是由于微软单独的directx到2010_jun_10就没有了再更新,之后安装会检测你的vs版本,如果较新则会报错,其实这个错误不影响后续使用,想避免报错,有个笨方法就是先卸载vs,然后先安装directx3D,之后再安装vs。
3、第一个程序
//
//
// File: d3dUtility.h
//
// Author: Frank Luna (C) All Rights Reserved
//
// System: AMD Athlon 1800+ XP, 512 DDR, Geforce 3, Windows XP, MSVC++ 7.0
//
// Desc: Provides utility functions for simplifying common tasks.
//
//
#ifndef __d3dUtilityH__
#define __d3dUtilityH__
#include <d3dx9.h>
#include <string>
namespace d3d
{
bool InitD3D(
HINSTANCE hInstance, // [in] Application instance.
int width, int height, // [in] Backbuffer dimensions.
bool windowed, // [in] Windowed (true)or full screen (false).
D3DDEVTYPE deviceType, // [in] HAL or REF
IDirect3DDevice9** device);// [out]The created device.
int EnterMsgLoop(
bool (*ptr_display)(float timeDelta));
LRESULT CALLBACK WndProc(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam);
template<class T> void Release(T t)
{
if( t )
{
t->Release();
t = 0;
}
}
template<class T> void Delete(T t)
{
if( t )
{
delete t;
t = 0;
}
}
}
#endif // __d3dUtilityH__
//
//
// File: d3dUtility.cpp
//
// Author: Frank Luna (C) All Rights Reserved
//
// System: AMD Athlon 1800+ XP, 512 DDR, Geforce 3, Windows XP, MSVC++ 7.0
//
// Desc: Provides utility functions for simplifying common tasks.
//
//
#include "d3dUtility.h"
bool d3d::InitD3D(
HINSTANCE hInstance,
int width, int height,
bool windowed,
D3DDEVTYPE deviceType,
IDirect3DDevice9** device)
{
//
// Create the main application window.
//
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)d3d::WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon