Vertex Buffer 세팅

 

 


디바이스 구조 기초

 

 

 


 

두르기 순서

 

왼손 좌표계의 경우 시계 방향으로 감긴다. 반면에 오른손 좌표계의 경우 반시계 방향으로 감긴다.

 

DX9 - 왼손 좌표계

Unreal, Unity - 왼손 좌표계

 

DX10, 11, 12, GL - 오른손 좌표계이지만 기존의 컨벤션을 유지하기 위해 왼손 좌표계 방식으로 코팅을 한다.

 


 

사각형 출력하기

 

07_Rect.fx

더보기
struct VertexInput
{
float4 Position : Position;
};
struct VertexOutput
{
float4 Position : SV_Position;
};
VertexOutput VS(VertexInput input)
{
VertexOutput output;
output.Position = input.Position;
return output;
}
float4 PS_R(VertexOutput input) : SV_Target
{
return float4(1, 0, 0, 1);
}
RasterizerState FillMode_Wireframe
{
FillMode = Wireframe;
};
technique11 T0
{
pass P0
{
SetVertexShader(CompileShader(vs_5_0, VS()));
SetPixelShader(CompileShader(ps_5_0, PS_R()));
}
pass P1
{
SetRasterizerState(FillMode_Wireframe);
SetVertexShader(CompileShader(vs_5_0, VS()));
SetPixelShader(CompileShader(ps_5_0, PS_R()));
}
}

 

RectDemo.h

더보기
#pragma once
#include "Systems/IExecute.h"
class RectDemo : public IExecute
{
public:
virtual void Initialize() override;
virtual void Ready() override {}
virtual void Destroy() override;
virtual void Update() override;
virtual void PreRender() override {}
virtual void Render() override;
virtual void PostRender() override {}
virtual void ResizeScreen() override {}
private:
Shader* shader;
Vertex vertices[6];
ID3D11Buffer* vertexBuffer;
};

 

RectDemo.cpp

더보기
#include "stdafx.h"
#include "RectDemo.h"
void RectDemo::Initialize()
{
shader = new Shader(L"07_Rect.fx");
vertices[0].Position = Vector3(+0.0f, +0.0f, 0.0f);
vertices[1].Position = Vector3(+0.0f, +0.5f, 0.0f);
vertices[2].Position = Vector3(+0.5f, +0.0f, 0.0f);
vertices[3].Position = Vector3(+0.5f, +0.0f, 0.0f);
vertices[4].Position = Vector3(+0.0f, +0.5f, 0.0f);
vertices[5].Position = Vector3(+0.5f, +0.5f, 0.0f);
D3D11_BUFFER_DESC desc;
ZeroMemory(&desc, sizeof(D3D11_BUFFER_DESC));
desc.ByteWidth = sizeof(Vertex) * 6;
desc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
D3D11_SUBRESOURCE_DATA subResource = { 0 };
subResource.pSysMem = vertices;
Check(D3D::GetDevice()->CreateBuffer(&desc, &subResource, &vertexBuffer));
}
void RectDemo::Destroy()
{
SafeDelete(shader);
SafeRelease(vertexBuffer);
}
void RectDemo::Update()
{
}
void RectDemo::Render()
{
UINT stride = sizeof(Vertex);
UINT offset = 0;
D3D::GetDC()->IASetVertexBuffers(0, 1, &vertexBuffer, &stride, &offset);
D3D::GetDC()->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
shader->Draw(0, 1, 6);
}

 

 

 


 

실행화면

 

 

 

'⭐ DirectX > DirectX11 3D' 카테고리의 다른 글

[DirectX11] 011 Index  (0) 2023.01.10
[DirectX11] 010 World  (1) 2023.01.09
[DirectX11] 009 World Matrix  (0) 2023.01.08
[DirectX11] 008 User Interface  (1) 2023.01.07
[DirectX11] 001~005 DirectX11 기초, NDC 좌표계  (0) 2023.01.04