ID3D11Buffer* _indexBuffer;
Create()
{
//VertexBuffer와 동일한 방식으로 생성
D3D11_BUFFER_DESC bd;
ZeroMemory(&bd, sizeof(bd));
bd.ByteWidth = sizeof(DWORD) * m_IndexList.size();
// GPU 메모리에 할당
bd.Usage = D3D11_USAGE_DEFAULT;
bd.BindFlags = D3D11_BIND_INDEX_BUFFER; //Vertex버퍼와 다른 flag 설정
D3D11_SUBRESOURCE_DATA sd;
ZeroMemory(&sd, sizeof(sd));
sd.pSysMem = &m_IndexList.at(0);
hr = m_pd3dDevice->CreateBuffer(
&bd, // 버퍼 할당
&sd, // 초기 할당된 버퍼를 체우는 CPU메모리 주소
&m_pIndexBuffer);
}
Render()
{
m_pImmediateContext->IASetIndexBuffer(m_pIndexBuffer, DXGI_FORMAT_R32_UINT, 0); // 사용 전 DeviceContext에 설정
m_pImmediateContext->DrawIndexed(m_IndexList.size(),0,0); // IndexBuffer사용 시 DrawIndexed사용
}
정점 쉐이더를 원본 정점의 개수만큼만 호출할 수 있음(호출 횟수 감소)
정점을 원본 정점만큼만 저장할 수 있음(메모리 감소)
struct SimpleVertex
{
TVector p;
TVector4D c;
TVector2D t;
};
일반적으로 대부분의 Object들은 자신의 Texture를 갖기 때문에 Color부분을 직접 출력할 일은 거의 없음
그러나 effect, particle같은 경우 동일한 texture * color 방식의 연산을 통해 동일한 Texture에 다른 표현이 가능
HRSULT S_OK, S_FALSE
S_OK와 S_FALSE는 SUCCEEDED()에서 모두 통과, 실패는 다른 코드
CreateWICTextureFromFile()
CreateDDSTextureFromFile()
WIC을 통해 읽어들일 경우 DDS의 파일을 못 읽을수도 있음