为什么突然开始Programming.Role.Playing.Games.with.DirectX是有原因的,DX11卡font这节,HLSL被书坑了,学习进程被打乱了,之前有瞄了一眼Programming.Role.Playing.Games.with.DirectX,发现讲的还是不错的,通俗易懂,就拿来练习下。
本来打算是先学完DX11的,但是坑爹的是到dx11的font章节,代码一点都没问题,但是显示的字体就是模糊的,以为是贴图问题和uv数据有问题,找了一周都没找到问题,就想学点其他的,缓解下心情。然后就开始学HLSL,所以一直在看国内的《DirectX3D HLSL高级实例精讲》,之前有吐槽过坑,但是已经扛不住了,文字表达不对就算了,源码和书上的还对不上,内容安排也不合理,真是浪费钱啊(我是买了实体书的,源码我也上传了),本来是打算一边网上查找一边了解一些图形的概念,但是看到SSAO和纹理的时候,发现还是放弃算了,光照贴图翻译成灯光贴图,百度翻译的吧?而且一处是光照贴图,另一处就是灯光贴图,还没隔几段呢,这种错误实在是太多了。
《DirectX3D HLSL高级实例精讲》这本书让我想起了大学时我们学校有个教授让我2位室友参与翻译一本书的事,后来书出来了,他们名字也写上去了,钱也拿到了。但是那质量只能呵呵了,因为其中一位室友连英语6级都没过,你就能想到那翻译质量了,《DirectX3D HLSL高级实例精讲》估计也是这种套路啊,哎,中国有些教授出的书啊,不吐槽了。
******************************************************************************************************************************************
废话讲了很多,开始正题了,第一章很简单的介绍了directx sdk的下载和一些配置,书很老了,所以这些都没有参考价值。然后就讲了线程(Thread),数据存储读取,过程(Process),状态(State)以及必备的windows窗口初始化。因为没有讲到dx一些相关的内容,所以我就把所有内容整合到一个工程内,封装到类里面去了。
调用也就更简单了,在Main.cpp里实例化,调用就行。
#include "ThreadClass.h"
#include "DataClass.h"
#include "ProcessClass.h"
#include "StateClass.h"
void TestThread();
void TestData();
void TestProcess();
void TestState();
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
TestThread();
TestData();
TestProcess();
TestState();
return 0;
}
void TestThread()
{
ThreadClass* m_thread;
m_thread = new ThreadClass();
if (!m_thread)
return;
m_thread->Initialize();
m_thread->Shutdown();
delete m_thread;
m_thread = nullptr;
::MessageBox(nullptr, TEXT("End"), TEXT("End"), MB_OK);
}
void TestData()
{
DataClass* m_data;
m_data = new DataClass();
if (!m_data)
return;
m_data->Test();
m_data->Release();
delete m_data;
m_data = nullptr;
}
void TestProcess()
{
ProcessClass* m_process;
m_process = new ProcessClass();
if (!m_process)
return;
m_process->Test();
m_process->Release();
delete m_process;
m_process = nullptr;
}
void TestState()
{
StateClass* m_state;
m_state = new StateClass();
if (!m_state)
return;
m_state->Test();
m_state->Release();
delete m_state;
m_state = nullptr;
}
因为window窗口初始化每本dx的书都会说的,就懒得在写一遍。我就把源码发一下,还有些设置公布下:
DirextXTK开头的都是环境变量,主要是微软DirextXTK的路径。
源码下载:下载路径
PS:也可以从我github上下载,但我会重构代码,所以你懂的。