[DirectX]Programming.Role.Playing.Games:01-开始

      为什么突然开始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上下载,但我会重构代码,所以你懂的。

猜你喜欢

转载自blog.csdn.net/zp288105109a/article/details/80851410
01-