//*****************************************************************************************
//
//【Visual C++】游戏开发笔记系列配套源码四十三 浅墨DirectX教程十一 为三维世界添彩:纹理映射技术(二)
// VS2010版
// 2013年 2月03日 Create by 浅墨
//图标及图片素材: 《仙剑奇侠传五前传》 夏侯瑾轩
//源码配套博文链接: http://blog.csdn.net/zhmxy555/article/details/8567848
//更多内容请访问我的博客: 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")
struct CUSTOMVERTEX
{
FLOAT _x, _y, _z; // 顶点的位置
FLOAT _u, _v; // 纹理坐标
CUSTOMVERTEX(FLOAT x, FLOAT y, FLOAT z, FLOAT u, FLOAT v)
: _x(x), _y(y), _z(z), _u(u), _v(v) {}
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_TEX1)
//*****************************************************************************************
// 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; //世界矩阵
LPDIRECT3DVERTEXBUFFER9 g_pVertexBuffer = NULL; //顶点缓存对象
LPDIRECT3DINDEXBUFFER9 g_pIndexBuffer = NULL; // 索引缓存对象
LPDIRECT3DTEXTURE9 g_pMipTexture= NULL; // 纹理接口对象,用于渐进纹理的存放
DInputClass* g_pDInput = NULL; //一个DInputClass类的指针
//*****************************************************************************************
// 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函数,创建一个消息窗口
}
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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
零资源分下载,分享精神至上 【Visual C++】游戏开发笔记之【浅墨DirectX提高班】系列博文 配套详细注释源码之十一 源码配套博文 《【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩:纹理映射技术(二)》 ,文章地址为http://blog.csdn.net/zhmxy555/article/details/8567848, 点击debug下的exe文件可以直接看到运行效果,运行需要DirectX运行库的支持。报缺少DLL系列错误的童鞋们请google/百度一下 “DirectX 9.0c runtime”,下载并装个最新版的。 如果是想调试并运行源代码,但是报错了,请去下载最新版DirectX SDK并进行DirectX开发环境的配置。 编写环境:VS2010 我的博客地址是http://blog.csdn.net/zhmxy555,源码结合配套文章一起看效果更佳。 希望能和大家一起交流,共同学习,共同进步。 友情声明:源代码在D3Ddemo11文件夹中,浅墨上传的博文配套代码一直以来都是有源代码的,很多童鞋下载了自己找不到源码位置,就乱说没有源代码。既然有sln工程文件,就肯定有源文件啊,我就纳闷了这几位童鞋怎么想的- -不信大家看我前几次上传的资源的评论。晕死- - by浅墨
资源推荐
资源详情
资源评论
收起资源包目录
D3Ddemo11 by浅墨.rar (57个子文件)
D3Ddemo11 by浅墨
D3Ddemo11.suo 17KB
D3Ddemo11.sln 894B
Debug
D3Ddemo11.ilk 495KB
D3Ddemo11.pdb 923KB
D3Ddemo11.exe 66KB
pal5q.jpg 26KB
icon.ico 123KB
D3Ddemo11
DirectInputClass.h 1KB
Debug
link.9188-cvtres.write.1.tlog 2B
CL.write.1.tlog 1024B
vc100.idb 547KB
mt.read.1.tlog 318B
link.12276-cvtres.read.1.tlog 2B
DirectInputClass.obj 31KB
link.4616-cvtres.read.1.tlog 2B
D3Ddemo11_manifest.rc 208B
link.11740.read.1.tlog 2B
link.12276.write.1.tlog 2B
link.4616.write.1.tlog 2B
link.11740-cvtres.write.1.tlog 2B
link-cvtres.write.1.tlog 2B
D3Ddemo11.lastbuildstate 56B
link.4616-cvtres.write.1.tlog 2B
D3Ddemo11.log 2KB
rc.command.1.tlog 1KB
link.4616.read.1.tlog 2B
link.11740-cvtres.read.1.tlog 2B
link.command.1.tlog 2KB
D3Ddemo111.res 32B
vc100.pdb 300KB
CL.read.1.tlog 28KB
mt.write.1.tlog 318B
link-cvtres.read.1.tlog 2B
link.12276-cvtres.write.1.tlog 2B
D3Ddemo11.exe.intermediate.manifest 381B
link.12276.read.1.tlog 2B
link.9188-cvtres.read.1.tlog 2B
rc.read.1.tlog 3KB
D3Ddemo11.exe.embed.manifest 406B
link.9188.write.1.tlog 2B
link.9188.read.1.tlog 2B
mt.command.1.tlog 392B
link.write.1.tlog 866B
D3Ddemo11.exe.embed.manifest.res 472B
cl.command.1.tlog 1KB
main.obj 82KB
rc.write.1.tlog 530B
link.read.1.tlog 4KB
link.11740.write.1.tlog 2B
D3DUtil.h 737B
DirectInputClass.cpp 4KB
D3Ddemo11.vcxproj 4KB
main.cpp 29KB
D3Ddemo11.vcxproj.filters 1KB
pal5q.jpg 26KB
icon.ico 123KB
D3Ddemo11.vcxproj.user 143B
共 57 条
- 1
浅墨_毛星云
- 粉丝: 4w+
- 资源: 80
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- libADLMIDI1-1.5.1-bp155.1.7.aarch64.rpm
- 基于python和resnet50的垃圾分类识别项目源码+全部数据.zip
- C语言进阶学习资料,关于预处理,文件处理,结构体,位移运算的学习 大学生期末复习资料,程序设计课程复习资料
- c++少儿编程专业教师使用资料
- box1234567890
- 少儿编程资料,c++少儿编程专业资料
- libADLMIDI1-1.5.1-bp156.2.6.aarch64.rpm
- java源码 仿360buy京东商城源码 京东JavaWeb项目源代码.rar
- libADLMIDI1-1.5.1-1.2.riscv64.rpm
- 基于ASP的BS架构工艺品展示系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页