일부 버텍스 정보가있는 일부 모델 (기하)이 있습니다. 예를 들어 position, normal, color, texcoord와 같이이 정보는 각각 고유의 정점 버퍼를가집니다. 그러나 이러한 모델 중 일부는 텍스처 좌표를 가지고 있습니다 ... 이 차이점을 관리하기 위해 상수 버퍼 "hasTextureCoordinates"의 플래그가 == 1이면 검사 할 vertexshader를 썼습니다. 그렇다면 texcoord 매개 변수를 사용할지 여부 . 는 그러나 DirectX는하지 정말이 해결 방법처럼 밖으로 인쇄 않습니다directx11에 선택적 vertexbuffer 객체가 있습니다.
D3D11 정보 : ID3D11DeviceContext :: 그리기 :하지만 요소 [3] 현재 입력의 레이아웃 선언 참조 입력 슬롯 3을, 어떤 버퍼이 결합하지가 슬롯. 빈 슬롯에서 읽은 값이 0을 반환하도록 정의되었으므로 정상입니다. 개발자는 데이터가 어쨌든 사용되지 않을 것임을 알 수 있습니다. 이것은 개발자가 실제로 입력 버퍼를 여기에 바인딩하려는 경우에만 문제가됩니다. [실행 정보 번호 348 : DEVICE_DRAW_VERTEX_BUFFER_NOT_SET]
나는 또한 내가 쓸 수 알아 ...이 "경고"모든 프레임 출력 내부 을보고 좋은 아니다, 모든 하드웨어가 올바르게 처리 있는지 확실하지 않습니다 두 개의 쉐이더, 하나는 텍사스가있는 것과 하나는 없는데, 문제는 이것 만이 누락 된 매개 변수가 아니라는 것입니다. 일부는 색상이 다른 것, 일부는 색상과 텍스처 좌표 등이 있습니다. 또한 각 정점 버퍼 입력 조합에 대한 셰이더를 작성하는 것은 극도로 중복됩니다. 이것은 극도로 나쁘다. 왜냐하면 우리가 하나의 셰이더를 변경한다면, 다른 셰이더도 변경해야하기 때문이다. 셰이더의 일부를 다른 파일에 넣고 포함시킬 수도 있지만 혼란 스럽습니다.
directx에서 특정 버텍스 버퍼가 선택 사항이라고 말하는 방법이 있습니까? 아니면 누군가이 문제에 대해 더 나은 해결책을 알고 있습니까?
이 해결 방법은이 문제를 해결하는 좋은 방법이라고 생각하십니까? 아니면 더 나은 방법이 있습니까? – Thomas
일반적으로 말해서 더 나은 해결책은 별개의 입력 레이아웃 객체를 갖는 것입니다. 내 요점은 당신이 * 많이 * 걱정하지 않고 INFO 메시지를 억제 할 수 있다는 것입니다. –