前面几篇文章中我们大致学习了解了D3D12,知道了怎么用D3D12来渲染一个带纹理的三角形,接下来我们就要把这些东西都移植进我们的框架里,然后再进一步学习其他东西。
首先我们把教程里的一些关键文件copy进Platform\Windows文件夹下

其中d3dx12.h是D3D12 的一个工具头文件,主要就是方便我们写代码用的,我们直接从官方教程中拷进来就行,
helper.h是一些常用的辅助函数,stdafx.h是一些常用的头文件引用。
然后我们新建D3D12WindowsAPPlication.h文件并写入
#pragma once相关影片资源迅雷下载推荐
新手网站制作教程:网站建设流程及步骤有哪些?
任何一个企业想网络上推广自己的品牌,最基本的要求就是有一个自己的域名,然后做一个自己的网站,国内很多中小企业都没有自己的独立域名,甚至都没有把域名先注册下来保护好,很多都是b2b平台上的一个店铺,一个独 ...
网站建设,新手网站制作教程:网站建设流程及步骤有哪些?
#include "stdafx.h"
#include "helper.h"
#include <stdexcept>
#include "WindowsApplication.h"
using Microsoft::WRL::ComPtr;
using namespace DirectX;
namespace kylin
{
class D3D12WindowsApplication : public WindowsApplication
{
void CreateMainWindow();
std::wstring GetAssetFullPath(LPCWSTR assetName);
void LoadAssets();
void LoadPipeline();
void OnDestroy();
void OnUpdate();
void OnRender();
void PopulateCommandList();
void WaitForPreviousFrame();
void GetHardwareAdapter(
_In_ IDXGIFactory1* pFactory,
_Outptr_result_maybenull_ IDXGIAdapter1** ppAdapter,
bool requestHighPerformanceAdapter = false);
static const UINT FrameCount = 2;
bool m_useWarpDevice = false;
std::wstring m_assetsPath;
float m_aspectRatio = static_cast<float>(width) / static_cast<float>(height);
UINT m_frameIndex = 0;
UINT m_rtvDescriptorSize = 0;
// Pipeline objects.
CD3DX12_VIEWPORT m_viewport = CD3DX12_VIEWPORT(0.0f, 0.0f, static_cast<float>(width), static_cast<float>(height));
CD3DX12_RECT m_scissorRect = CD3DX12_RECT(0, 0, static_cast<LONG>(width), static_cast<LONG>(height));
ComPtr<IDXGISwapChain3> m_swapChain;
ComPtr<ID3D12Device> m_device;
ComPtr<ID3D12Resource> m_renderTargets[FrameCount];
ComPtr<ID3D12CommandAllocator> m_commandAllocator;
ComPtr<ID3D12CommandQueue> m_commandQueue;
ComPtr<ID3D12RootSignature> m_rootSignature;
ComPtr<ID3D12DescriptorHeap> m_rtvHeap;
ComPtr<ID3D12PipelineState> m_pipelineState;
ComPtr<ID3D12GraphicsCommandList> m_commandList;
// App resources.
ComPtr<ID3D12Resource> m_vertexBuffer;
D3D12_VERTEX_BUFFER_VIEW m_vertexBufferView;
// Synchronization objects.
HANDLE m_fenceEvent;
ComPtr<ID3D12Fence> m_fence;
UINT64 m_fenceValue;
};
struct Vertex
{
XMFLOAT3 position;
XMFLOAT4 color;
};
}
然后新建D3D12WindowsApplication.cpp并写入
namespace kylin{
D3D12WindowsApplication g_App;
IApplication* g_pApp = &g_App;
void kylin::D3D12WindowsApplication::CreateMainWindow()
{
WCHAR assetsPath[512];
GetAssetsPath(assetsPath, _countof(assetsPath));
m_assetsPath = assetsPath;
WindowsApplication::CreateMainWindow();
LoadPipeline();
LoadAssets();
}
...
...
}
中间省略的部分就是我们之前在李晓磊:程序小白如何开发自己的游戏引擎10:Hello D3D12中学到的那些函数的实现。
然后我们修改下Cmake文件,打开Platform\Windows文件夹下的CMakeLists.txt并修改为
add_executable(Windows WindowsApplication.cpp D3D12WindowsApplication.cpp)target_link_libraries(Windows
Common
d3d12
dxgi
d3dcompiler
)
这里新链接了d3d12,dxgi,d3dcompiler这三个库,这些库之前也都介绍过了,都是D3D12必须的,这里我们就是在windows下运行的,所以直接链接就行。
然后我们就可以打开重新make下工程,然后打开vs工程重新生成下我们的kylin,这样d3d12就接进来了!!
之后就可以把李晓磊:程序小白如何开发自己的游戏引擎11:HelloTriangle, 李晓磊:程序小白如何开发自己的游戏引擎12:HelloTexture里的内容也都接进来。

企业网站建设与开发最低只要299元起,包含域名服务器,需要的联系QQ345424724,电话15516990022,18530226930相关影片资源迅雷下载推荐
浅析企业自助建站系统的特性
在第三代企业网站建设浪潮掀起之前自主式系统的出现既省时省力还省钱,因此大家对于应用之后二十分钟就可以出现一个功能完善且精致美观的网址有很大的好感。但是这类可以推动现代化建设的产品也需要让大家了解一 ...
网站建设,浅析企业自助建站系统的特性
标签: 游戏开发 程序小白如何开发自己的游戏引擎13:KylinD3D12