IndexBuffer - Noanswers/shipman GitHub Wiki
μμ μ μ λ²νΌμ λν λ΄μ©μ λ³Έ λ€μμ μ§ννμκΈΈ λ°λλλ€. μ μ λ²νΌλ§ μ¬μ©νλ κ²½μ°, λ¨μν μ¬κ°νμ 그리기 μν΄μ μ μ μ 6κ°λ μ¬μ©ν΄μΌ ν©λλ€. ν΄λ¦¬κ³€μ΄ 볡μ‘ν΄μ§λ κ²½μ°, μ€λ³΅λλ μ μ μ μλ ν μ¬ λ λ§μ μ§ κ²μ λλ€. μ΄μ κ°μ λΆν©λ¦¬ν μν©μ κ°μ νκΈ° μν΄ μ¬μ©νλ κ²μ΄ index buffer μ λλ€.
index buffer λν, μ΄λ¦μμ μ μ μλ―μ΄ λ²νΌμ μ μ₯νλ κ°μ΄κΈ°μ μ μ λ²νΌμ μ μ¬ν λ°©λ²μΌλ‘ μμ±ν©λλ€.
- D3D11_BUFFER_DESC ꡬ쑰체λ₯Ό μ΄μ©νμ¬ μΈλΆ μ¬νμ κ²°μ ν©λλ€.
- BindFlags κ°μ D3D11_BIND_INDEX_BUFFERλ‘ μ§μ νλ κ² μΈμ ν° μ°¨μ΄μ μ μμ΅λλ€.
- D3D11_SUBRESOURCE_DATA ꡬ쑰체λ₯Ό μ΄μ©νμ¬ μ΄κΈ°νν μΈλ±μ€μ μ 보λ₯Ό μ λ¬ν©λλ€.
- CreateBuffer ν¨μλ₯Ό μ¬μ©νμ¬ λ²νΌλ₯Ό μμ±ν©λλ€.
μ¬κΈ°κΉμ§λ λ§€μ° λμΌν©λλ€.
##ID3D11DeviceContext::IASetIndexBuffer ν¨μ##
- IASetVertexBuffers ν¨μμ μ μ¬ν μν μ μνν©λλ€.
- index bufferλ₯Ό νμ΄νλΌμΈμ λ¬Άμ΄μ€λλ€.
virtual void STDMETHODCALLTYPE IASetIndexBuffer(
/* [annotation] */
_In_opt_ ID3D11Buffer *pIndexBuffer,
/* [annotation] */
_In_ DXGI_FORMAT Format,
/* [annotation] */
_In_ UINT Offset
) = 0;
- pIndexBuffer
- μΈλ±μ€ λ²νΌμ μ£Όμλ₯Ό μ λ¬ν΄μ€λλ€.
- Format
- κ° μΈλ±μ€μ νμμ λ»ν©λλ€.
- μλ₯Ό λ€μ΄ unsigned intλ₯Ό μ¬μ©νμ¬ μΈλ±μ€λ₯Ό μ§μ νλ κ²½μ° DXGI_FORMAT_R32_UINT κ°μ μ§μ νλ©΄ λ©λλ€.
- D3D11_BUFFER_DESC.BandWidth μ μ§μ ν ν¬κΈ°μ μΌμΉνλλ‘ μ κ²½μ¨μ£Όμ΄μΌ ν©λλ€.
- Offset
- μΈλ±μ€λ₯Ό μ½κΈ° μμν μμΉλ₯Ό μ§μ ν©λλ€.
##ID3D11DeviceContext::DrawIndexed ν¨μ##
- μΈλ±μ€λ₯Ό μ΄μ©νλ κ²½μ° Draw ν¨μκ° μλλΌ DrawIndexed ν¨μλ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
virtual void STDMETHODCALLTYPE DrawIndexed(
/* [annotation] */
_In_ UINT IndexCount,
/* [annotation] */
_In_ UINT StartIndexLocation,
/* [annotation] */
_In_ INT BaseVertexLocation
) = 0;
- IndexCount
- draw ν¨μμ μ¬μ©ν μΈλ±μ€μ κ°―μμ λλ€.
- StartIndexLocation
- μ¬μ©ν 첫 μΈλ±μ€μ μμΉμ λλ€.
- BaseVertexLocation
- μ μ λ€μ κ°μ Έμ€κΈ° μ μ, ν΄λΉ νΈμΆμμ μ¬μ©ν μμΈλ€μ λν΄μ§λ μ μ κ°μ λλ€.
μ΄λ¬ν 맀κ°λ³μλ€μ, νλμ μ μ λ²νΌλ₯Ό μ¬μ©νμ¬ μ¬λ¬ ν΄λ¦¬κ³€μ 그리λλ° μμ£Ό μ μ©ν©λλ€.