Konstansbufferek benn
This commit is contained in:
parent
989583c029
commit
c836535da6
21
DXWindow.cpp
21
DXWindow.cpp
@ -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())))
|
||||
|
10
DXWindow.h
10
DXWindow.h
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user