資源簡介
《Visual C++ OpenGL DirectX三維動畫編程寶典》書籍附帶的源代碼。

代碼片段和文件信息
//下面是程序所需要的include文件,第一個include是視窗所必須的,
//第二個是Direct3D?8所必須的。
#include?
#include?
#include?
HWND hWnd;
HDC hDC;
HINSTANCE hInstance; //得到程序的例子
LPDIRECT3D8?P_D3D;
LPDIRECT3DDEVICE8?p_D3DDevice;
RECT rect;
int sw?=?640;
int sh?=?480;
bool fullscreen??=?1;
//一個用來定義頂點的宏‘macro‘
#define?D3D8T_CUSTOMVERTEX?(D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
//頂點緩沖區是用優化方法渲染存儲的頂點的一種方法
IDirect3DVertexBuffer8?*g_triangle=NULL;
IDirect3DVertexBuffer8?*g_square=NULL;
//?程序鏈接時加入d3d8.lib
#pragma?comment(lib“d3d8.lib“)
#pragma?comment(lib“d3dx8.lib“)
int?D3DInit()
{
???return?1;
}
D3DFORMAT?find_16bit_mode(void){
HRESULT?hr;
???//首先測試(16位色模式)R5G6B5
???hr=P_D3D->CheckDeviceType(D3DADAPTER_DEFAULTD3DDEVTYPE_HALD3DFMT_R5G6B5D3DFMT_R5G6B5FALSE);
???if(SUCCEEDED(hr)){
??????OutputDebugString(“D3DFMT_R5G6B5\n“);
??????return?D3DFMT_R5G6B5;
???}
???//接下來測試X1R5G5B5
???hr=P_D3D->CheckDeviceType(D3DADAPTER_DEFAULTD3DDEVTYPE_HALD3DFMT_X1R5G5B5D3DFMT_X1R5G5B5FALSE);
???if(SUCCEEDED(hr)){
??????OutputDebugString(“D3DFMT_X1R5G5B5\n“);
??????return?D3DFMT_X1R5G5B5;
???}
???return?(D3DFORMAT)NULL;
}
int?D3DEnable()
{
HRESULT?hr;
D3DPRESENT_PARAMETERS?d3dpp;
D3DDISPLAYMODE?display_mode;
???//創建Drect3D8,這是在任何D3D8程序里必須做的事情
???//返回D3D版本值(D3D_SDK_VERSION)
???P_D3D?=?Direct3DCreate8(?D3D_SDK_VERSION?);
?
???//僅運行在窗口模式,功能是得到當前(桌面)顯示模式
???hr=P_D3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT&display_mode);
??
???//將D3DPRESENT_PARAMETERS結構清零
???ZeroMemory(&d3dppsizeof(d3dpp));
???//在全屏和窗口方式下均相同
???d3dpp.SwapEffect?????=?D3DSWAPEFFECT_DISCARD;?//由于不再有用,所以要釋放以前的幀。
???d3dpp.hDeviceWindow??=?hWnd;??//這是主窗口(唯一的)
???d3dpp.BackBufferCount=?1;??//僅需要一個備分緩沖區
???////在全屏模式下要設置后備緩沖區的寬/高.
???if(fullscreen){
??????d3dpp.Windowed??????????=?FALSE;
??????d3dpp.BackBufferWidth???=?sw;
??????d3dpp.BackBufferHeight??=?sh;
??????d3dpp.BackBufferFormat??=?find_16bit_mode();
???}
???else
???{
??????d3dpp.Windowed??????????=?TRUE;
??????d3dpp.BackBufferFormat??=?display_mode.Format;
???}
???hr=P_D3D->CreateDevice(D3DADAPTER_DEFAULT?//在多顯示器系統中默認的接口
??????????????????????????//可以超過一個。盡可能地選擇硬件加速而不是軟件渲染
??????????????????????????D3DDEVTYPE_HAL
??????????????????????????//當前的窗口
??????????????????????????hWnd
??????????????????????????//用軟件處理矢量,要比硬件方式慢,但兼容所有圖形卡
??????????????????????????D3DCREATE_SOFTWARE_VERTEXPROCESSING
??????????????????????????//?D3DPRESENT_PARAMETERS結構
??????????????????????????&d3dpp
??????????????????????????//指向新的設備
??????????????????????????&p_D3DDevice);
???if(!p_D3DDevice)?return?1;
???else?return?0;
??
}
void?D3DDisable()
{
???if(p_D3DDevice){
??????p_D3DDevice->Release();
??????p_D3DDevice=NULL;
???}
???if(P_D3D){
??????P_D3D->Release();
??????P_D3D=NULL;
???}
}
void?D3DSceneShow()
{
static?unsigned?char?red=0green=0blue=0;
???//清除緩沖區并置為新的顏色
???srand(?(unsigned)(time(NULL)));
???red=rand()%2
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2002-09-19?16:01??d3dlesson2a\
?????文件????????9887??2002-02-05?15:22??d3dlesson2a\d3dlesson2a.cpp
?????文件????????3978??2002-02-02?02:47??d3dlesson2a\d3dlesson2a.dsp
?????文件?????????545??2002-02-01?00:19??d3dlesson2a\d3dlesson2a.dsw
?????文件???????45056??2002-02-05?17:05??d3dlesson2a\d3dlesson2a.exe
?????文件???????41984??2002-02-05?17:06??d3dlesson2a\d3dlesson2a.ncb
?????文件???????53760??2002-02-05?17:06??d3dlesson2a\d3dlesson2a.opt
?????文件????????1142??2002-02-05?17:05??d3dlesson2a\d3dlesson2a.plg
?????目錄???????????0??2002-09-19?16:01??d3dlesson2b\
?????文件????????9338??2002-02-05?15:23??d3dlesson2b\d3dlesson2b.cpp
?????文件????????3978??2002-02-02?03:36??d3dlesson2b\d3dlesson2b.dsp
?????文件?????????545??2002-02-01?00:19??d3dlesson2b\d3dlesson2b.dsw
?????文件???????49152??2002-02-05?17:06??d3dlesson2b\d3dlesson2b.exe
?????文件???????41984??2002-02-05?17:06??d3dlesson2b\d3dlesson2b.ncb
?????文件???????53760??2002-02-05?17:06??d3dlesson2b\d3dlesson2b.opt
?????文件????????1142??2002-02-05?17:06??d3dlesson2b\d3dlesson2b.plg
?????目錄???????????0??2002-09-19?16:01??d3dlesson3\
?????文件????????9332??2002-02-05?15:30??d3dlesson3\d3dlesson3.cpp
?????文件????????3966??2002-02-02?03:43??d3dlesson3\d3dlesson3.dsp
?????文件?????????543??2002-02-01?00:19??d3dlesson3\d3dlesson3.dsw
?????文件???????49152??2002-02-05?17:07??d3dlesson3\d3dlesson3.exe
?????文件???????41984??2002-02-05?17:07??d3dlesson3\d3dlesson3.ncb
?????文件???????53760??2002-02-05?17:07??d3dlesson3\d3dlesson3.opt
?????文件????????1137??2002-02-05?17:07??d3dlesson3\d3dlesson3.plg
?????目錄???????????0??2002-09-19?16:01??d3dlesson4\
?????文件???????10133??2002-02-05?17:08??d3dlesson4\d3dlesson4.cpp
?????文件????????3966??2002-02-02?04:18??d3dlesson4\d3dlesson4.dsp
?????文件?????????543??2002-02-02?03:44??d3dlesson4\d3dlesson4.dsw
?????文件???????49152??2002-02-05?17:08??d3dlesson4\d3dlesson4.exe
?????文件???????50176??2002-02-05?17:08??d3dlesson4\d3dlesson4.ncb
?????文件???????54784??2002-02-05?17:08??d3dlesson4\d3dlesson4.opt
............此處省略140個文件信息
評論
共有 條評論