资源简介
《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个文件信息
相关资源
- MFC 与 HALCON混合编程
- svm算法源代码VC++实现
- opengl做的迷宫游戏,基于C++
- (LSB算法)数字水印的VC++实现
- VC++MFC最好最全入门教程
- 五子棋,MFC,VC6.0
- VC++实现打印
- 基于GDAL VC6.0的遥感影像K均值分类程序
- 对战坦克大战源代码(vc++)
- Visual C++数字图像获取、处理及实践应
- vc++实现des加密和解密
- opengl实现漫游
- vc++6.0中文版支持win7
- VC++串口通信编码
- VC++抓包程序代码
- vc上位机详解
- VC++单文档视图打开bmp图片
- VC6.0 socket编程,多客户端,单服务器
- VC++局域网聊天室完整版
- 大鱼吃小鱼游戏VC++源码
- 太空入侵者游戏源代码VC++
- 小型网络游戏vc++——网络五子棋
- VC++雷达模拟程序
- XYZ和STL文件MFC显示
- 用VC++编写的利用MITK读取五种图片格式
- 连连看 MFC 连连看 mfc 连连看
- VC++ socket 聊天室客户端
- 简单的OpenGL 3D场景
- Microsoft Visual C++ 2005 Redistributable Pack
- VC++帮助文档
评论
共有 条评论