Search
Duplicate

인덱스 버퍼 / 상수 버퍼 클래스

인덱스 버퍼와 상수 버퍼의자세한 설명은 다음 페이지를 통해서
확인해보세요.

인덱스 버퍼

인덱스 버퍼에는 그리려는 각 삼각형/선/점의 개별 인덱스가 들어 있습니다.
인덱스 버퍼 생성하는 함수
bool IndexBuffer::Create(const std::vector<UINT>& indices) { desc.ByteWidth = sizeof(UINT) * indices.size(); desc.BindFlags = D3D11_BIND_FLAG::D3D11_BIND_INDEX_BUFFER; desc.Usage = D3D11_USAGE_DEFAULT; desc.CPUAccessFlags = 0; D3D11_SUBRESOURCE_DATA sub = {}; sub.pSysMem = indices.data(); if (!GetDevice()->CreateBuffer(&desc, &sub, buffer.GetAddressOf())) assert(NULL && "indices buffer create fail!!"); return true; }
C++
복사
인덱스 버퍼를 파이프라인에 묶어주는 함수
void IndexBuffer::Bind() const { GetDevice()->BindIndexBuffer(buffer.Get(), DXGI_FORMAT_R32_UINT, 0); }
C++
복사

상수 버퍼

상수 버퍼는 그릴 때 셰이더 단계로 전송할 데이터를 나타냅니다. 일반적으로 모델 뷰 투영 행렬이나 색상, 슬라이더 등과 같은 특정 변수 데이터를 여기에 넣습니다.
상수 버퍼를 생성해주는 함수
bool ConstantBuffer::Create(eCBType type, UINT size, void* data) { mType = type; mSize = size; desc.ByteWidth = size; desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; desc.Usage = D3D11_USAGE_DYNAMIC; desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; D3D11_SUBRESOURCE_DATA sub = {}; sub.pSysMem = data; bool succes = false; if (data == NULL) succes = GetDevice()->CreateBuffer(&desc, nullptr, buffer.GetAddressOf()); else succes = GetDevice()->CreateBuffer(&desc, &sub, buffer.GetAddressOf()); if (!succes) assert(NULL, "Create constant buffer failed!"); return true; }
C++
복사
상수 버퍼에 데이터를 세팅해주는 함수
void ConstantBuffer::SetData(void* data) const { GetDevice()->SetDataBuffer(buffer.Get(), data, mSize); }
C++
복사
상수 버퍼를 해당 파이프라인 스테이지에 묶어주는 함수
void ConstantBuffer::Bind(eShaderStage stage) const { GetDevice()->BindConstantBuffer(stage, mType, buffer.Get()); }
C++
복사