Konstansbufferek benn

This commit is contained in:
Wiesner András 2020-03-01 18:57:50 +01:00
parent 989583c029
commit c836535da6
3 changed files with 31 additions and 7 deletions

View File

@ -1,6 +1,8 @@
#include "DXWindow.h"
#include "IDrawable.h"
using namespace DirectX;
namespace eg3d {
DXWindow::DXWindow() : Window(true)
@ -286,6 +288,7 @@ namespace eg3d {
mCommandList->OMSetRenderTargets(1, &getCurrentBackBufferRTVHandle(), true, &getDSVHandle());
// TODO konstansbuffer bekötése
mCommandList->SetGraphicsRootConstantBufferView(0, cbResource->GetGPUVirtualAddress());
////////// OBJEKTUMOK KIRAJZOLÁSA
//drawObject();
@ -295,8 +298,6 @@ namespace eg3d {
drawables[i]->draw(mCommandList);
}
// TODO drawables kirajzolása
//////////
mCommandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(getCurrentBackBuffer(), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT));
@ -410,19 +411,29 @@ namespace eg3d {
void DXWindow::createConstantBuffers()
{
// konstansbuffer létrehozása
cbResource = createBuffer_UH(mDevice, calc256AlignedSize(sizeof(constantBuffer)));
}
void DXWindow::updateConstantBuffers()
{
// TODO konstansbuffer feltöltése
// transzformáció frissítése
//DirectX::XMStoreFloat4x4(&constantBuffer.transformMatrix, DirectX::XMMatrixScaling(2.0, 1.0, 1.0));
DirectX::XMStoreFloat4x4(&constantBuffer.transformMatrix, DirectX::XMMatrixRotationZ(XM_PI));
bufferMapCopy(cbResource, static_cast<void *>(&constantBuffer), sizeof(constantBuffer));
}
void DXWindow::createRootSignature()
{
// TODO root paraméterek megadása
// root paraméterek létrehozása
CD3DX12_ROOT_PARAMETER slotParams[1];
// konstansbuffer-TÍPUS beállítása
slotParams[0].InitAsConstantBufferView(0);
CD3DX12_ROOT_SIGNATURE_DESC rsD(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT);
CD3DX12_ROOT_SIGNATURE_DESC rsD(1, &slotParams[0], 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT);
ComPtr<ID3DBlob> serializedRS = nullptr, errorBlob = nullptr;
if (FAILED(D3D12SerializeRootSignature(&rsD, D3D_ROOT_SIGNATURE_VERSION_1, serializedRS.GetAddressOf(), errorBlob.GetAddressOf())))

View File

@ -14,6 +14,8 @@
#include "comdef.h"
#include "IDrawable.h"
#include <DirectXMath.h>
// Vertex struktúrája
struct Vertex
{
@ -21,7 +23,11 @@ struct Vertex
float r, g, b;
};
// TODO konstansbuffer típus
// konstansbuffer struktúrája
struct ConstantBuffer
{
DirectX::XMFLOAT4X4 transformMatrix;
};
namespace eg3d {
@ -83,6 +89,8 @@ namespace eg3d {
ComPtr<ID3DBlob> vertexShader, pixelShader; // vertex- és pixel-shader program
// TODO konstansbuffer példány és DX-objektum
ComPtr<ID3D12Resource> cbResource; // konstansbuffer DX-objektuma
ConstantBuffer constantBuffer; // konstansbuffer
// TODO TRANSZFORMÁCIÓS TULAJDONSÁGOK
void initDrawObjects(); // kirajzolandó objektumok inicializálása

View File

@ -10,11 +10,16 @@ struct VSOutput // vertex shader kimeneti strukt
float3 color : COLOR;
};
cbuffer CBuf : register(b0)
{
float4x4 transformMatrix;
};
VSOutput vs_main(VSInput input)
{
VSOutput output; // vertex shader kimenete
output.position_H = float4(input.position_D, 1.0);
output.position_H = mul(transformMatrix, float4(input.position_D, 1.0));
output.color = input.color;
return output;