Replace CreateShaderFromFile with D3D12Shader wrapper
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#include <windows.h>
|
||||
#include <d3d12.h>
|
||||
#include <dxgi1_4.h>
|
||||
#include <d3dcompiler.h>
|
||||
#include "XCEngine/RHI/D3D12/D3D12Shader.h"
|
||||
#include <DirectXMath.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -69,6 +69,9 @@ XCEngine::RHI::D3D12CommandAllocator gCommandAllocator;
|
||||
XCEngine::RHI::D3D12CommandList gCommandList;
|
||||
XCEngine::RHI::D3D12RootSignature gRootSignature;
|
||||
XCEngine::RHI::D3D12PipelineState gPipelineState;
|
||||
XCEngine::RHI::D3D12Shader gVertexShader;
|
||||
XCEngine::RHI::D3D12Shader gGeometryShader;
|
||||
XCEngine::RHI::D3D12Shader gPixelShader;
|
||||
|
||||
// 同步对象
|
||||
XCEngine::RHI::D3D12Fence gFence;
|
||||
@@ -286,31 +289,6 @@ ID3D12RootSignature* InitRootSignature() {
|
||||
return gRootSignature.GetRootSignature();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// 着色器加载函数
|
||||
// 从.hlsl文件编译着色器 (VS/GS/PS)
|
||||
//=================================================================================
|
||||
void CreateShaderFromFile(
|
||||
LPCTSTR inShaderFilePath,
|
||||
const char* inMainFunctionName,
|
||||
const char* inTarget,
|
||||
D3D12_SHADER_BYTECODE* inShader) {
|
||||
ID3DBlob* shaderBuffer = nullptr;
|
||||
ID3DBlob* errorBuffer = nullptr;
|
||||
HRESULT hResult = D3DCompileFromFile(inShaderFilePath, nullptr, nullptr,
|
||||
inMainFunctionName, inTarget, D3DCOMPILE_DEBUG | D3DCOMPILE_SKIP_OPTIMIZATION,
|
||||
0, &shaderBuffer, &errorBuffer);
|
||||
if (FAILED(hResult)) {
|
||||
char szLog[1024] = { 0 };
|
||||
strcpy_s(szLog, (char*)errorBuffer->GetBufferPointer());
|
||||
Log("CreateShaderFromFile error : [%s][%s]:[%s]\n", inMainFunctionName, inTarget, szLog);
|
||||
errorBuffer->Release();
|
||||
return;
|
||||
}
|
||||
inShader->pShaderBytecode = shaderBuffer->GetBufferPointer();
|
||||
inShader->BytecodeLength = shaderBuffer->GetBufferSize();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// 常量缓冲 (Constant Buffer) 创建与更新
|
||||
// UPLOAD堆: CPU可写, GPU可读
|
||||
@@ -850,11 +828,10 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
||||
staticMeshComponent.InitFromFile(gCommandList.GetCommandList(), "Res/Model/Sphere.lhsm");
|
||||
|
||||
ID3D12RootSignature* rootSignature = InitRootSignature();
|
||||
D3D12_SHADER_BYTECODE vs, gs, ps;
|
||||
CreateShaderFromFile(L"Res/Shader/gs.hlsl", "MainVS", "vs_5_1", &vs);
|
||||
CreateShaderFromFile(L"Res/Shader/gs.hlsl", "MainGS", "gs_5_1", &gs);
|
||||
CreateShaderFromFile(L"Res/Shader/gs.hlsl", "MainPS", "ps_5_1", &ps);
|
||||
ID3D12PipelineState* pso = CreatePSO(rootSignature, vs, ps, gs);
|
||||
gVertexShader.CompileFromFile(L"Res/Shader/gs.hlsl", "MainVS", "vs_5_1");
|
||||
gGeometryShader.CompileFromFile(L"Res/Shader/gs.hlsl", "MainGS", "gs_5_1");
|
||||
gPixelShader.CompileFromFile(L"Res/Shader/gs.hlsl", "MainPS", "ps_5_1");
|
||||
ID3D12PipelineState* pso = CreatePSO(rootSignature, gVertexShader.GetBytecode(), gPixelShader.GetBytecode(), gGeometryShader.GetBytecode());
|
||||
|
||||
ID3D12Resource* cb = CreateConstantBufferObject(65536);
|
||||
DirectX::XMMATRIX projectionMatrix = DirectX::XMMatrixPerspectiveFovLH(
|
||||
|
||||
Reference in New Issue
Block a user