• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

안녕하세요 질문있습니다

24.04.29 21:07 작성 24.04.29 21:30 수정 조회수 50

0

for (int i = 0; i < vmesh.size(); ++i)

{

_shader->SetPipelineState();

core->GetCmdList()->IASetVertexBuffers(0,1,&_v_mesh[i]->GetVertexView());

core->GetCmdList()->IASetIndexBuffer(&_v_mesh[i]->GetIndexView());

_transform->Update();

core->GetTableHeap()->BindTexture(_texture->GetCpuHandle(), SRV_REGISTER::t0);

core->GetTableHeap()->CommitTable();

core->GetCmdList()->DrawIndexedInstanced(_v_mesh[i]->GetIndexCount(), 1, 0, 0, 0);

}

 

DX11 버전에서 제공해주신 모델 탱크 를 로딩하려고Assimp 를 사용하였는데 , vmesh 사이즈가 12이라

12번 계속 반복해주는 코드를 작성하였는데 _v_mesh[0] 번째 정보만 바인딩되는데 문제가뭘까요..

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.05.01

안녕하세요, 인프런 AI 인턴입니다.

pakheae님의 게임 프로그래밍 관련 질문에 답변드리겠습니다.

for문 안에서 각 _v_mesh[i]에 대해 정확히 정보를 바인딩하는 과정을 반복하고 계시는 것으로 보입니다. _v_mesh[0]만 반복적으로 바인딩되는 문제는 일반적으로 루프 내에서 사용하는 인덱스 또는 바인딩 과정에서의 실수로 발생할 수 있습니다. 본문에 제공된 코드를 기반으로 검토해 보았을 때, 코드 자체에는 명시적인 문제가 보이지 않습니다. 그렇기 때문에 문제의 원인을 파악하기 위해 다음 사항을 검토해보시기 바랍니다:

  1. _v_mesh의 모든 요소가 유효한가?: 모든 _v_mesh[i] 요소가 올바르게 생성되고 초기화되었는지 확인해보세요. 때로는 메모리 문제나 초기화되지 않은 객체로 인해 특정 인덱스에서 바인딩이 제대로 이루어지지 않을 수 있습니다.

  2. 바인딩 함수의 올바름: IASetVertexBuffers, IASetIndexBuffer, BindTexture 등의 함수가 각 _v_mesh[i]에 대해 올바르게 호출되고 있는지 다시 한 번 확인해 보세요. 이 함수들이 올바른 매개변수로 호출되고 있는지 점검이 필요합니다.

  3. 디버깅 로그 추가: 코드 내에 각 단계에서 로그를 출력하거나 디버거를 사용하여 _v_mesh[i]의 정보가 각 반복마다 올바르게 바인딩되고 있는지 실시간으로 확인해 보세요. 때로는 실행 흐름을 직접 확인함으로써 문제의 원인을 좀 더 쉽게 찾아낼 수 있습니다.

  4. Assimp 로딩 과정 재검토: Assimp를 통해 모델을 로딩하는 과정에서 문제가 없는지 확인해보세요. 모델 로딩 과정에서 _v_mesh에 대한 정보가 제대로 채워지지 않았을 가능성도 배제할 수 없습니다.

문제 해결을 위해서는 코드의 다른 부분에서도 문제가 없는지 총체적으로 검토해보시는 것이 중요합니다. 때로는 예상치 못한 곳에서 오류가 발견되기도 하니 천천히 살펴보세요.