정점 버퍼(Vertex Buffer)는 3D모델의 정점 데이터를 GPU에 전달하기 위한 기본적인 구조이다.
이 버퍼를 통해 정점 데이터(위치, 색상, 법선, 텍스처 좌표 등)를 그래픽 파이프라인에 공급할 수 있다.
3D 모델을 구성하는 기본 단위로, 보통 다음의 데이터를 포함한다.
| 항목 | 설명 |
|---|---|
| 용도 | GPU로 정점 데이터를 전달 |
| 위치 | GPU 메모리(일반적으로 VRAM)에 존재 |
| 접근 방식 | 일반적으로 CPU는 접근 불가 (D3D11_USAGE_DEFAULT) |
| 데이터 형식 | 커스텀 구조체를 배열로 저장 |
| 함께 쓰이는 요소 | 입력 레이아웃, 셰이더, 인덱스 버퍼 |
struct Vertex {
DirectX::XMFLOAT3 position;
DirectX::XMFLOAT4 color;
};
Vertex vertices[] = {
{ { 0.0f, 0.5f, 0.0f }, { 1.0f, 0.0f, 0.0f, 1.0f } },
{ { 0.5f, -0.5f, 0.0f }, { 0.0f, 1.0f, 0.0f, 1.0f } },
{ { -0.5f, -0.5f, 0.0f }, { 0.0f, 0.0f, 1.0f, 1.0f } },
};
D3D11_BUFFER_DESC)D3D11_BUFFER_DESC bufferDesc = {};
bufferDesc.Usage = D3D11_USAGE_DEFAULT;
bufferDesc.ByteWidth = sizeof(vertices);
bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
bufferDesc.CPUAccessFlags = 0;
D3D11_SUBRESOURCE_DATA)D3D11_SUBRESOURCE_DATA initData = {};
initData.pSysMem = vertices;
ID3D11Device::CreateBuffer)ID3D11Buffer* vertexBuffer = nullptr;
device->CreateBuffer(&bufferDesc, &initData, &vertexBuffer);