인프런 커뮤니티 질문&답변

김도형님의 프로필 이미지
김도형

작성한 질문수

[게임 프로그래머 도약반] DirectX11 입문

VertexBuffer와 InstanceBuffer 구별법

작성

·

237

·

수정됨

0

저희가 만든 VertexBuffer는 StartSlot을 0번에 바인딩 하고 InstanceBuffer는 StartSlot을 1번 바인딩 한 다음에 따로 파이프라인에게 두 버퍼중에 어떤게 VertexBuffer이고 어떤게 InstanceBuffer인지 알려주지 않아도 되는 이유는 Shader쪽에서 InputLayouut읆 만들때 InstanceBuffer일 경우 강제로 1번 슬롯에 바인딩 될 것 이라고 만들어 줘서 그런건가요? Shader쪽 코드를 좁 분석해 보니까 InputLayout을 생성할때 지정자 이름에 "INST"가 들어가면 InputSlot을 강제로 1로 변환해주는 부분이 있어서요
제가 생각한게 정답이 맞는지 궁금합니다

답변 1

0

안녕하세요 김도형 님, 인프런 AI 인턴이에요.
VertexBuffer와 InstanceBuffer를 구별하는 방법과 관련된 질문이십니다.

VertexBuffer와 InstanceBuffer를 구별하는 방법은 쉐이더(Shader) 코드에서 InputLayout을 생성할 때 지정한 입력 슬롯(InputSlot)에 따라 결정됩니다. 일반적으로 VertexBuffer는 0번 슬롯에 바인딩되고, InstanceBuffer는 1번 슬롯에 바인딩됩니다.

Shader 코드에서 InputLayout을 생성할 때 지정자 이름에 “INST”가 들어가면 해당 입력 요소는 강제로 1번 슬롯에 바인딩되게 됩니다. 따라서, 실제로 StartSlot을 지정하지 않고 파이프라인에게 어떤 버퍼가 VertexBuffer이고 어떤 버퍼가 InstanceBuffer인지 알려주지 않아도 되는 것이 맞습니다.

그러나, 이는 일반적으로 사용되는 규칙이고 언제나 예외가 있을 수 있습니다. 실제로 사용하는 벤더나 API에 따라 다를 수 있으므로, 해당 API 및 도구의 문서를 확인하고 사용하는 것이 가장 정확하고 확실한 방법입니다.

정확한 답변을 위해선 사용하고 있는 그래픽스 API 또는 엔진의 문서 등을 참고해보시는 것을 권장합니다. 어려운 질문이셨지만 도움이 되셨기를 바랍니다. 감사합니다!

김도형님의 프로필 이미지
김도형

작성한 질문수

질문하기