资源简介
《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个文件信息
相关资源
- VC++ 多线程文件读写操作
- 移木块游戏,可以自编自玩,vc6.0编写
- MFC数字钟(基于VC6.0)
- 安科瑞智能电能表MODBUS通讯程序 VC6
- VC++MFC小游戏实例教程(实例)+MFC类库
- VC6LineNumberAddin.dll
- 用VC6.0实现多边形扫描线填充算法
- VC++实现CMD命令执行与获得返回信息
- VC助手 VC6.0助手
- 安卓c语言开发SDL2+opengles
- 交互式计算机图形学 第六版 OpenGL源代
- VC++基于OpenGL模拟的一个3维空间模型
- 基于VC++的SolidWorks二次开发SolidWorks
- VC6 USB开发源码
- VC操作SQLSERVER数据库
- aes加解密(vc源程序)
- vc_串口通讯
- 吕鑫vc6c++数据结构视频源码
- 派克变换VC++源码(附文档)
- 基于opencv漫水填充算法综合
- VC++ 串口
- VC++ 大富翁4_大富翁游戏源码
- MFC的异步网络通讯应用程序
- VC++ 摄像头视频采集与回放源程序
- 转 VC++ 实现电子邮件(Email)发送
- opengl绘制汽车.cpp
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- VC++ 服务程序编写及安装与卸载
- VC++6.0番茄西红柿VAXvirsual assist X完美破
- VC编程助手2010破解版(原名VA_X_10.6.
评论
共有 条评论