D3Ddemo20.rar

  • totolica
    了解作者
  • C/C++
    开发工具
  • 59.3MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2020-07-12 12:22
    上传日期
directx编程实践:造物主的降临,多游戏模型的载入示例程序
D3Ddemo20.rar
  • D3Ddemo20
  • D3Ddemo20
  • GameMedia
  • terrainstone.jpg
    492.4KB
  • SunSetRight2048.png
    2.1MB
  • SunSetBack2048.png
    2.1MB
  • heighmap.raw
    117.2KB
  • SunSetFront2048.png
    2.1MB
  • SunSetLeft2048.png
    2.7MB
  • icon.ico
    12.6KB
  • snow6.jpg
    35.7KB
  • snow2.jpg
    44.7KB
  • snow1.jpg
    36KB
  • snow3.jpg
    50.7KB
  • snow5.jpg
    45.3KB
  • SunSetUp2048.png
    3.3MB
  • 汪峰-光明.wav
    9.9MB
  • snow4.jpg
    37.2KB
  • Release
  • link.read.1.tlog
    4.7KB
  • D3Ddemo20.log
    2.2KB
  • vc100.pdb
    396KB
  • link.command.1.tlog
    2.3KB
  • TerrainClass.obj
    934.5KB
  • CL.write.1.tlog
    3.3KB
  • D3Ddemo20.exe.intermediate.manifest
    381B
  • cl.command.1.tlog
    4.7KB
  • CameraClass.obj
    201.7KB
  • mt.read.1.tlog
    728B
  • D3Ddemo20.lastbuildstate
    62B
  • XFileModelClass.obj
    206.2KB
  • SkyBoxClass.obj
    200KB
  • DirectInputClass.obj
    57KB
  • main.obj
    868.8KB
  • mt.write.1.tlog
    268B
  • SnowParticleClass.obj
    199.4KB
  • CL.read.1.tlog
    117.8KB
  • mt.command.1.tlog
    452B
  • link.write.1.tlog
    1.2KB
  • CameraClass.h
    2.2KB
  • main.cpp
    25.4KB
  • 510b66d8.bmp
    3MB
  • angle.X
    1.1MB
  • 30574944.bmp
    3MB
  • D3Ddemo20.vcxproj
    4.4KB
  • D3Ddemo20.vcxproj.user
    143B
  • SkyBoxClass.h
    1.2KB
  • CameraClass.cpp
    9.6KB
  • SkyBoxClass.cpp
    5.7KB
  • XFileModelClass.h
    888B
  • knight.X
    1.7MB
  • DirectInputClass.h
    1.3KB
  • dragon.X
    1MB
  • SnowParticleClass.h
    2.2KB
  • TerrainClass.cpp
    7.7KB
  • D3Ddemo20.vcxproj.filters
    2.2KB
  • DirectInputClass.cpp
    4.5KB
  • D3DUtil.h
    848B
  • 10e74fa0.bmp
    384.1KB
  • a4f86cc2.bmp
    3MB
  • XFileModelClass.cpp
    3.3KB
  • SnowParticleClass.cpp
    6.2KB
  • 5bba89dd.bmp
    3MB
  • Demon.X
    981.1KB
  • TerrainClass.h
    1.8KB
  • 4e594733.bmp
    3MB
  • Release
  • GameMedia
  • terrainstone.jpg
    492.4KB
  • SunSetRight2048.png
    2.1MB
  • SunSetBack2048.png
    2.1MB
  • heighmap.raw
    117.2KB
  • SunSetFront2048.png
    2.1MB
  • SunSetLeft2048.png
    2.7MB
  • icon.ico
    12.6KB
  • snow6.jpg
    35.7KB
  • snow2.jpg
    44.7KB
  • snow1.jpg
    36KB
  • snow3.jpg
    50.7KB
  • snow5.jpg
    45.3KB
  • SunSetUp2048.png
    3.3MB
  • 汪峰-光明.wav
    9.9MB
  • snow4.jpg
    37.2KB
  • 510b66d8.bmp
    3MB
  • angle.X
    1.1MB
  • 30574944.bmp
    3MB
  • D3Ddemo20.exe
    41.5KB
  • knight.X
    1.7MB
  • dragon.X
    1MB
  • 10e74fa0.bmp
    384.1KB
  • a4f86cc2.bmp
    3MB
  • 5bba89dd.bmp
    3MB
  • Demon.X
    981.1KB
  • 4e594733.bmp
    3MB
  • D3Ddemo20.sln
    894B
  • D3Ddemo20.suo
    12.5KB
内容介绍
//-----------------------------------【程序说明】---------------------------------------------- // 程序名称::D3Ddemo20 // 2013年4月 Create by 浅墨 // 描述:造物主的降临:多游戏模型的载入 示例程序 // 背景音乐素材出处: 魔兽争霸3 // 人物模型素材出处:英雄无敌6 仿制版 //------------------------------------------------------------------------------------------------ //-----------------------------------【宏定义部分】-------------------------------------------- // 描述:定义一些辅助宏 //------------------------------------------------------------------------------------------------ #define WINDOW_WIDTH 932 //为窗口宽度定义的宏,以方便在此处修改窗口宽度 #define WINDOW_HEIGHT 700 //为窗口高度定义的宏,以方便在此处修改窗口高度 #define WINDOW_TITLE _T("【致我们永不熄灭的游戏开发梦想】造物主的降临:多游戏模型的载入 ") //为窗口标题定义的宏 //-----------------------------------【头文件包含部分】--------------------------------------- // 描述:包含程序所依赖的头文件 //------------------------------------------------------------------------------------------------ #include <d3d9.h> #include <d3dx9.h> #include <tchar.h> #include <time.h> #include "DirectInputClass.h" #include "CameraClass.h" #include "TerrainClass.h" #include "SkyBoxClass.h" #include "SnowParticleClass.h" #include "XFileModelClass.h" //-----------------------------------【库文件包含部分】--------------------------------------- // 描述:包含程序所依赖的库文件 //------------------------------------------------------------------------------------------------ #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") //-----------------------------------【全局变量声明部分】------------------------------------- // 描述:全局变量的声明 //------------------------------------------------------------------------------------------------ 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; //世界矩阵 D3DLIGHT9 g_Light; //全局光照 DInputClass* g_pDInput = NULL; //DInputClass类的指针实例 CameraClass* g_pCamera = NULL; //摄像机类的指针实例 TerrainClass* g_pTerrain = NULL; //地形类的指针实例 SkyBoxClass* g_pSkyBox=NULL; //天空盒类的指针实例 SnowParticleClass* g_pSnowParticles = NULL; //雪花粒子系统的指针实例 XFileModelClass* g_pXFileModel1 = NULL; //模型类的第一个对象 XFileModelClass* g_pXFileModel2 = NULL; //模型类的第二个对象 XFileModelClass* g_pXFileModel3 = NULL; //模型类的第三个对象 XFileModelClass* g_pXFileModel4 = NULL; //模型类的第四个对象 //-----------------------------------【全局函数声明部分】------------------------------------- // 描述:全局函数声明,防止“未声明的标识”系列错误 //------------------------------------------------------------------------------------------------ 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,FLOAT fTimeDelta); void Direct3D_Update( HWND hwnd,FLOAT fTimeDelta); void Direct3D_CleanUp( ); float Get_FPS(); void HelpText_Render(HWND hwnd); //-----------------------------------【WinMain( )函数】-------------------------------------- // 描述:Windows应用程序的入口函数,我们的程序从这里开始 //------------------------------------------------------------------------------------------------ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nShowCmd) { //【1】窗口创建四步曲之一:开始设计一个完整的窗口类 WNDCLASSEX wndClass = { 0 }; //用WINDCLASSEX定义了一个窗口类 wndClass.cbSize = sizeof( WNDCLASSEX ) ; //设置结构体的字节数大小 wndClass.style = CS_HREDRAW | CS_VREDRAW; //设置窗口的样式 wndClass.lpfnWndProc = WndProc; //设置指向窗口过程函数的指针 wndClass.cbClsExtra = 0; //窗口类的附加内存,取0就可以了 wndClass.cbWndExtra = 0; //窗口的附加内存,依然取0就行了 wndClass.hInstance = hInstance; //指定包含窗口过程的程序的实例句柄。 wndClass.hIcon=(HICON)::LoadImage(NULL,L"GameMedia\\icon.ico",IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE); //本地加载自定义ico图标 wndClass.hCursor = LoadCursor( NULL, IDC_ARROW ); //指定窗口类的光标句柄。 wndClass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH); //为hbrBackground成员指定一个白色画刷句柄 wndClass.lpszMenuName = NULL; //用一个以空终止的字符串,指定菜单资源的名字。 wndClass.lpszClassName = L"ForTheDreamOfGameDevelop"; //用一个以空终止的字符串,指定窗口类的名字。 //【2】窗口创建四步曲之二:注册窗口类 if( !RegisterClassEx( &wndClass ) ) //设计完窗口后,需要对窗口类进行注册,这样才能创建该类型的窗口 return -1; //【3】窗口创建四步曲之三:正式创建窗口 HWND hwnd = CreateWindow( L"ForTheDreamOfGameDevelop",WINDOW_TITLE, //喜闻乐见的创建窗口函数CreateWindow WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hInstance, NULL ); //Direct3D资源的初始化,调用失败用messagebox予以显示 if (!(S_OK==Direct3D_Init (hwnd,hInstance))) { MessageBox(hwnd, _T("Direct3D初始化失败~!"), _T("浅墨的消息窗口"), 0); //使用MessageBox函数,创建一个消息窗口 } //【4】窗口创建四步曲之四:窗口的移动、显示与更新 MoveWindow(hwnd,150,20,WINDOW_WIDTH,WINDOW_HEIGHT,true); //调整窗口显示时的位置,使窗口左上角位于(150,20)处 ShowWindow( hwnd, nShowCmd ); //调用ShowWindow函数来显示窗口 UpdateWindow(hwnd); //对窗口进行更新,就像我们买了新房子要装修一样 //进行DirectInput类的初始化 g_pDInput = new DInputClass(); g_pDInput->Init(hwnd,hInstance,DISCL_FOREGROUND | DISCL_NONEXCLUSIVE,DISCL_FOREGROUND | DISCL_NONEXCLUSIVE); //前台,非独占模式 PlaySound(L"GameMedia\\汪峰-光明.wav", NULL, SND_FILENAME | SND_ASYNC|SND_LOOP); //循环播放背景音乐 //【5】消息循环过程 MSG msg = { 0 }; //初始化msg while( msg.message != WM_QUIT ) //使用while循环 { static FLOAT fLastTime = (float)::timeGetTime(); static FLOAT fCurrTime = (float)::timeGetTime(); static FLOAT fTimeDelta = 0.0f; fCurrTime = (float)::timeGetTime(); fTimeDelta = (fCurrTime - fLastTime) / 1000.0f; fLastTime = fCurrTime; if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ) //查看应用程序消息队列,有消息时将队列中的消息派发出去。 { TranslateMessage( &msg ); //将虚拟键消息转换为字符消息 DispatchMessage( &msg ); //该函数分发一个消息给窗口程序。 } else { Direct3D_Update(hwnd,fTimeDelta); //调用更新函数,进行画面的更新 Direct3D_Render(hwnd,fTimeDelta); //调用渲染函数,进行画面的渲染 } } //【6】窗口类的注销 UnregisterClass(L"ForTheDreamOfGameDevelop", wndClass.hInstance); //程序准备结束,注销窗口类 return 0; } //-----------------------------------【WndProc( )函数】-------------------------------------- // 描述:窗口过程函数WndProc,对窗口消息进行处理 //------------------------------------------------------------------------------------------------ LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) //窗口过程函数WndProc { switch( message ) //switch语句开始 { case WM_PAINT: /
评论
    相关推荐
    • DirectX 9个类库
      九个DLL文件大致对应于DirectX中的十个命名空间。编程中就是使用其中的命名空间来提供对输入设备、声音、网络播放、图形等的支持。Direct X SDK 9.0中的定义的命名空间及其主要的作用: 1、Microsoft.DirectX 公共类...
    • directx卸载工具
      BUE DirectX 卸载精灵(R4.0 完全版) 大家都会感觉到:每逢微软发布一个新版本 的DirectX我们都会好奇地去尝新一下,并不是 每一个人的机器的实际情况和配置都相同,所以 都会或多或少地出现一些...
    • DirectX spotlight
      此资源为C++编写的DirectX代码,可以实现点光源照在四个物体上。
    • DirectX修复工具
      DirectX修复工具是一款专用于修复系统异常的工具,DirectX修复工具还是一款使用简单易上手操作且绿色、可免安装的修复工具。使用DirectX修复工具可自动更新C++组件且完美修复0xc000007b问题异常。如果你的电脑出现了...
    • directx相关组件
      directx的相关组件,很多人运行程序时,特别是玩游戏时,常常弹出来缺少d3dx9_xx.dll ,此压缩包包含很多d3dx9_xx.dll文件,卡纳可能少哪个就把那个放到程序目录下就行了。
    • directx9.0
      DirectX是一个辅助软件,是一种应用程序接口 作用是协助操作系统对图形、声音进行处理 由于微软的操作系统会自带DirectX 所以可以把它看做系统的一个插件 没有它很多3D软件都不能运行 英文意思就是Direct .而X...
    • DirectX Stranded
      这是基于directx9.0编写的三维游戏的框架, 希望,初学者好好研究一下,这个游戏对应的是书 《DirectX游戏开发终极指南》这个是把原书bug改过来,并初步能够运行!
    • DirectX随意卸
      DirectX随意卸 更新说明 v4.17 .增强兼容性 v4.16 .更新了DX卸载数据库 .一些小改动 v4.15 .修复了一个双核CPU系统中运行会重启的BUG .更新了DX卸载数据库 v4.1 .增加对Vista SP1 的支持 .修复了几个中、小...
    • DirectX修复工具
      本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。 程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版 的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的...
    • DirectX 教程 电子书
      directx非常有用的电子书 DirectX基础(初级篇) 1、什么是DirectX? 2、如何安装和使用DirectX 3、一个DirectDraw入门程序 4、DirectDraw图形编程基础知识 DirectDraw核心(高级篇) 1、DirectDraw...