//*****************************************************************************************
//
//【Visual C++】游戏开发笔记系列配套源码四十六 浅墨DirectX教程十四 模板缓存与镜面特效专场
// VS2010版
// 2013年 3月3日 Create by 浅墨
//图标素材出处: VAMPIRE_SWEETIE
//背景音乐素材出处:仙剑奇侠传3外传问情篇
//源码配套博文链接: http://blog.csdn.net/zhmxy555/article/details/8632184
//更多内容请访问我的博客: http://blog.csdn.net/zhmxy555
//此刻心情:如果你看到了前面的黑暗,不要担心,那是因为你的背后有阳光。
//
//*****************************************************************************************
//*****************************************************************************************
// Desc: 宏定义部分
//*****************************************************************************************
#define SCREEN_WIDTH 800 //为窗口宽度定义的宏,以方便在此处修改窗口宽度
#define SCREEN_HEIGHT 600 //为窗口高度定义的宏,以方便在此处修改窗口高度
#define WINDOW_TITLE _T("【Visual C++】游戏开发笔记系列配套示例程序四十六 浅墨DirectX教程十四 模板缓存与镜面特效专场") //为窗口标题定义的宏
//*****************************************************************************************
// Desc: 头文件定义部分
//*****************************************************************************************
#include <d3d9.h>
#include <d3dx9.h>
#include <tchar.h>
#include <time.h>
#include "DirectInputClass.h"
//*****************************************************************************************
// Desc: 库文件定义部分
//*****************************************************************************************
#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"d3dx9.lib")
#pragma comment(lib, "dinput8.lib") // 使用DirectInput必须包含的库文件,注意这里有8
#pragma comment(lib,"dxguid.lib")
#pragma comment(lib, "winmm.lib")
//*****************************************************************************************
// Desc: 全局变量声明部分
//*****************************************************************************************
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; //Direct3D设备对象
LPD3DXFONT g_pTextFPS =NULL; //字体COM接口
LPD3DXFONT g_pTextAdaperName = NULL; // 显卡信息的2D文本
LPD3DXFONT g_pTextHelper = NULL; // 帮助信息的2D文本
LPD3DXFONT g_pTextInfor = NULL; // 绘制信息的2D文本
float g_FPS = 0.0f; //一个浮点型的变量,代表帧速率
wchar_t g_strFPS[50]={0}; //包含帧速率的字符数组
wchar_t g_strAdapterName[60]={0}; //包含显卡名称的字符数组
D3DXMATRIX g_matWorld; //世界矩阵
DInputClass* g_pDInput = NULL; //一个DInputClass类的指针
LPD3DXMESH g_pMesh = NULL; // 网格对象
D3DMATERIAL9* g_pMaterials = NULL; // 网格的材质信息
LPDIRECT3DTEXTURE9* g_pTextures = NULL; // 网格的纹理信息
DWORD g_dwNumMtrls = 0; // 材质的数目
LPD3DXMESH g_pMeshWall = NULL; // 墙面网格对象
D3DMATERIAL9 g_MaterialsWall; // 材质
//*****************************************************************************************
// Desc: 全局函数声明部分
//*****************************************************************************************
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
HRESULT Direct3D_Init(HWND hwnd,HINSTANCE hInstance);
HRESULT Objects_Init();
void Direct3D_Render( HWND hwnd);
void Direct3D_Update( HWND hwnd);
void Direct3D_CleanUp( );
float Get_FPS();
void Matrix_Set();
//*****************************************************************************************
// Name: WinMain( )
// Desc: Windows应用程序入口函数
//*****************************************************************************************
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nShowCmd)
{
//开始设计一个完整的窗口类
WNDCLASSEX wndClass = { 0 }; //用WINDCLASSEX定义了一个窗口类,即用wndClass实例化了WINDCLASSEX,用于之后窗口的各项初始化
wndClass.cbSize = sizeof( WNDCLASSEX ) ; //设置结构体的字节数大小
wndClass.style = CS_HREDRAW | CS_VREDRAW; //设置窗口的样式
wndClass.lpfnWndProc = WndProc; //设置指向窗口过程函数的指针
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance; //指定包含窗口过程的程序的实例句柄。
wndClass.hIcon=(HICON)::LoadImage(NULL,_T("icon.ico"),IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE); //从全局的::LoadImage函数从本地加载自定义ico图标
wndClass.hCursor = LoadCursor( NULL, IDC_ARROW ); //指定窗口类的光标句柄。
wndClass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH); //为hbrBackground成员指定一个灰色画刷句柄
wndClass.lpszMenuName = NULL; //用一个以空终止的字符串,指定菜单资源的名字。
wndClass.lpszClassName = _T("ForTheDreamOfGameDevelop"); //用一个以空终止的字符串,指定窗口类的名字。
if( !RegisterClassEx( &wndClass ) ) //设计完窗口后,需要对窗口类进行注册,这样才能创建该类型的窗口
return -1;
HWND hwnd = CreateWindow( _T("ForTheDreamOfGameDevelop"),WINDOW_TITLE, //喜闻乐见的创建窗口函数CreateWindow
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, SCREEN_WIDTH,
SCREEN_HEIGHT, NULL, NULL, hInstance, NULL );
//Direct3D资源的初始化,调用失败用messagebox予以显示
if (!(S_OK==Direct3D_Init (hwnd,hInstance)))
{
MessageBox(hwnd, _T("Direct3D初始化失败~!"), _T("浅墨的消息窗口"), 0); //使用MessageBox函数,创建一个消息窗口
}
PlaySound(L"仙剑·战斗3.wav", NULL, SND_FILENAME | SND_ASYNC|SND_LOOP); //循环播放背景音乐
MoveWindow(hwnd,200,50,SCREEN_WIDTH,SCREEN_HEIGHT,true); //调整窗口显示时的位置,窗口左上角位于屏幕坐标(200,50)处
ShowWindow( hwnd, nShowCmd ); //调用Win32函数ShowWindow来显示窗口
UpdateWindow(hwnd); //对窗口进行更新,就像我们买了新房子要装修一样
//进行DirectInput类的初始化
g_pDInput = new DInputClass();
g_pDInput->Init(hwnd,hInstance,DISCL_FOREGROUND | DISCL_NONEXCLUSIVE,DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);
//消息循环过程
MSG msg = { 0 }; //初始化msg
while( msg.message != WM_QUIT ) //使用while循环
{
if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ) //查看应用程序消息队列,有消息时将队列中的消息派发出去。
{
TranslateMessage( &msg ); //将虚拟键消息转换为字符消息
DispatchMessage( &msg ); //该函数分发一个消息给窗口程序。
}
else
{
Direct3D_Update(hwnd); //调用更新函数,进行画面的更新
Direct3D_Render(hwnd); //调用渲染函数,进行画面的渲染
}
}
UnregisterClass(_T("ForTheDreamOfGameDevelop"), wndClass.hInstance);
return 0;
}
//*****************************************************************************************
// Name: WndProc()
// Desc: 对窗口消息进行处理
//*****************************************************************************************
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) //窗口过程函数WndProc
{
switch( message ) //switch语句开始
{
case WM_PAINT: // 客户区重绘消息
Direct3D_Render(hwnd); //调用Direct3D_Render函数,进行画面的绘制
ValidateRect(hwnd, NULL); // 更新客户区的显示
break; //跳出该switch语句
case WM_KEYDOWN: // 键盘按下消息
if (wParam == VK_ESCAPE) // ESC键
DestroyWindow(hwnd); // 销毁窗口, 并发送一条WM_DESTROY消息
break;
case WM_DESTROY: //窗口销毁消息
Direct3D_CleanUp(); //调用Direct3D_CleanUp函数,清理COM接口对象
PostQuitMessage( 0 ); //向系统表明有个线程有终止请求。用来响应WM_DESTROY消息
break; //跳出该switch语句
default: //若上述case条件都不符合,则执行该default语句
return DefWindowProc( hwnd, message, wParam, lParam ); //调用缺省的窗口过程
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
零资源分下载,分享精神至上~ 其中的3D模型使用的是最终幻想中的女主角雷霆,非常帅气,可以自己用鼠标和键盘控制视角。并用数字键1与2控制深度测试的开启或者关闭。 源码的配套博文是 《【Visual C++】游戏开发笔记四十六 浅墨DirectX教程十四 模板测试与镜面特效专场》 ,文章地址为http://blog.csdn.net/zhmxy555/article/details/8632184, 点击Release下的exe文件可以直接看到运行效果,运行需要DirectX运行库的支持。报缺少D3D的DLL系列错误的童鞋们请google/百度一下 “DirectX 9.0c runtime”,下载并装个最新版的。 报缺少MVCR100D.Dll错误的朋友们去下一个安装就可以了,或者直接点击sln打开工程再次编译一次。 如果是想调试并运行源代码,但是报错了,请去下载最新版DirectX SDK并进行DirectX开发环境的配置。 编写环境:VS2010 我的博客地址是http://blog.csdn.net/zhmxy555,源码结合配套文章一起看效果更佳。 希望能和大家一起交流,共同学习,共同进步。 by浅墨
资源推荐
资源详情
资源评论
收起资源包目录
D3Ddemo14 by浅墨.rar (78个子文件)
D3Ddemo14 by浅墨
D3Ddemo14.suo 11KB
D3Ddemo14.sln 894B
D3Ddemo14
D3Ddemo14.vcxproj 4KB
Debug
cl.command.1.tlog 1KB
D3Ddemo14.exe.intermediate.manifest 381B
link.1284-cvtres.write.1.tlog 2B
rc.command.1.tlog 540B
CL.read.1.tlog 28KB
vc100.idb 539KB
mt.read.1.tlog 318B
link.1284.read.1.tlog 2B
link.6924-cvtres.read.1.tlog 2B
D3Ddemo14.lastbuildstate 56B
link-cvtres.read.1.tlog 2B
link.read.1.tlog 4KB
D3Ddemo14.log 2KB
rc.read.1.tlog 290B
link.write.1.tlog 866B
CL.write.1.tlog 1024B
link.6924.read.1.tlog 2B
D3Ddemo14.exe.embed.manifest 406B
DirectInputClass.obj 31KB
vc100.pdb 300KB
D3Ddemo14.exe.embed.manifest.res 472B
main.obj 84KB
link.command.1.tlog 2KB
D3Ddemo14_manifest.rc 208B
mt.write.1.tlog 318B
link.1284.write.1.tlog 2B
link.6924.write.1.tlog 2B
link.6924-cvtres.write.1.tlog 2B
link.1284-cvtres.read.1.tlog 2B
mt.command.1.tlog 392B
rc.write.1.tlog 298B
link-cvtres.write.1.tlog 2B
D3Ddemo14.vcxproj.filters 1KB
c001_07.bmp 3MB
c001_13.bmp 1.5MB
D3Ddemo14.vcxproj.user 143B
icon.ico 132KB
c001_05.bmp 768KB
main.cpp 27KB
Release
cl.command.1.tlog 1KB
D3Ddemo14.exe.intermediate.manifest 381B
CL.read.1.tlog 28KB
mt.read.1.tlog 736B
D3Ddemo14.lastbuildstate 58B
link.read.1.tlog 3KB
D3Ddemo14.log 2KB
link.write.1.tlog 630B
CL.write.1.tlog 1KB
DirectInputClass.obj 57KB
vc100.pdb 188KB
main.obj 242KB
link.command.1.tlog 1KB
mt.write.1.tlog 276B
mt.command.1.tlog 460B
D3DUtil.h 737B
DirectInputClass.h 1KB
DirectInputClass.cpp 4KB
仙剑·战斗3.wav 5.91MB
c001_02.bmp 48KB
c001_11.bmp 1.5MB
w001_00.bmp 384KB
lighting.X 4.47MB
c001_16.bmp 192KB
Release
c001_07.bmp 3MB
c001_13.bmp 1.5MB
D3Ddemo14.exe 21KB
icon.ico 132KB
c001_05.bmp 768KB
D3Ddemo14.pdb 467KB
仙剑·战斗3.wav 5.91MB
c001_02.bmp 48KB
c001_11.bmp 1.5MB
w001_00.bmp 384KB
lighting.X 4.47MB
c001_16.bmp 192KB
共 78 条
- 1
浅墨_毛星云
- 粉丝: 4w+
- 资源: 80
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页