https://github.com/kevinmoran/BeginnerDirect3D11
# include <d3d11.h>
# include <d3dcompiler.h>
D3D11CreateDevice(머신?) → CreateSwapChain(draw buffer? front buffer ↔ back buffer swap 관리자인듯)
- SwapChain에 draw된 RenderTarget을 가져오고 ( SwapChain→GetBuffer , Device→CreateRenderTargetView )
- depth stencil 가져와서 ( CreateTexture(DepthStencil flag )
- 쿵짝쿵짝
Frame
- context에서 clear rendertarget view
- swap chain에서 present
render pipe _ shader config
- vs Blob 생성 → 메모리 할당(D3DCompileFromFile) → vertex shader 생성(CreateVertexShader)
- ps Blob 생성 → 메모리 할당(D3DCompileFromFile) → pixel shader 생성(CreatePixelShader)
- inputLayoutDesces에서 cemantic에 대한 정의
예시
// Create Input Layout
ID3D11InputLayout* inputLayout;
{
D3D11_INPUT_ELEMENT_DESC inputElementDesc[] =
{
{ "POS", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0}
};
HRESULT hResult = d3d11Device->CreateInputLayout(inputElementDesc, ARRAYSIZE(inputElementDesc), vsBlob->GetBufferPointer(), vsBlob->GetBufferSize(), &inputLayout);
assert(SUCCEEDED(hResult));
vsBlob->Release();
}
render pipe _ draw call
- D3D11_SubResource_data에 vertex 데이터 입력 ( { float[] } ) ← 3개마다 나눠서 x, y, z로 샘플링 ( flag : BindVertexBuffer ) → CreateBuffer
- 동일하게 indces도 ( vertex index 기반 polygons ) ( flag : Bind_Index_Buffer )
- constant buffer(createrbuffer) → resterizer state → depth stencil state
- 상수버퍼 : 모든 버텍스에서 참조하는 상수 값. 전역변수같은 역할인듯. ex) object의 position 등. vs나 ps에서 상수버퍼 변수명 그대로 쓰면 됨
struct Constants
{
float4x4 modelViewProj;
};
ID3D11Buffer* constantBuffer;
{
D3D11_BUFFER_DESC constantBufferDesc = {};
// ByteWidth must be a multiple of 16, per the docs
constantBufferDesc.ByteWidth = sizeof(Constants) + 0xf & 0xfffffff0;
constantBufferDesc.Usage = D3D11_USAGE_DYNAMIC;
constantBufferDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
constantBufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
HRESULT hResult = d3d11Device->CreateBuffer(&constantBufferDesc, nullptr, &constantBuffer);
assert(SUCCEEDED(hResult));
}
'3D Graphics' 카테고리의 다른 글
Graphics 개요2 (0) | 2024.05.22 |
---|---|
기본 수학 (0) | 2024.05.22 |
FBX 구조 (0) | 2024.05.22 |
Graphics 개요 (0) | 2024.05.22 |