그래서 나는 어딘가에 내 쉐이더에서,이 가정은 다음과 같이 성명 (나는 DX9와 DX10 간의 쉐이더 공유하는 레거시 지원을 가능하게하고 참고) 확인 :D3D10 HLSL : 리플렉션을 통해 텍스처를 글로벌 Texture2D에 바인딩하려면 어떻게해야합니까?
Texture2D DiffuseMap;
내가 아무런 문제 쉐이더를 컴파일 할 수 있지만, ShaderResourceView를 "DiffuseMap"에 바인딩하는 방법에 대해서는 약간의 손실이 있습니다. 셰이더를 "리플 렉트 (Reflect)"할 때 나는 일정한 버퍼의 변수들 사이에서 돌아갈 것이라고 생각했습니다. 그렇지 않습니다. 사실 나는 그것을 어디서나 식별 할 수없는 것처럼 보입니다. 그렇다면 ShaderResourceView를 바인딩해야하는 텍스쳐 "스테이지"(DX9 용어 사용)를 어떻게 알 수 있습니까?
편집 : "GetResourceBindingDesc"를 사용하여 샘플러 이름을 식별 할 수 있음을 발견했습니다. 나는 전혀 :(
Edit2가 그래도 나에게 도움이 확실하지 않다 :. 즉, 나는 단지 샘플러를 얻을 수 있습니다 ... 마찬가지로 나뿐만 아니라 DX9에서 자사의 동일 발견하지 않았다
EDIT3 : 내 Texture2D와 샘플러는 다음과 같습니다 :
Texture2D DiffuseMap : DiffuseTexture;
sampler DiffuseSampler = sampler_state
{
Texture = (DiffuseMap);
MinFilter = Linear;
MaxFilter = Linear;
};
를 이제 효과 프레임 워크에 내가 의미 "DiffuseTexture"에 의해 Texture2D를 얻을 수 나는 다음 Texture2D에 ResourceView (D3D10)/텍스처 (D3D9)을 설정할 수 있습니다. 아아 거기에 늪지 표준 쉐이더를 사용하여 "의미"를 처리 할 방법이없는 것 같습니다 (D3D가 어떻게하는지 알면 좋겠지 만 D3D11 효과 프레임 워크를 연구하면 아무 것도 얻을 수 없습니다. ar. 바이너리에서 읽는 것 같습니다. 즉, 컴파일 된 데이터이고, "DiffuseSampler"만 볼 수 있습니다.)
DX9 .fx 파일 (또는 .vs/.ps?)을 가지고 있으며 리플렉션을 사용하여 DX10 컨텍스트에서 컴파일 및 실행하고 싶습니까? – Stringer
효과적으로 ... 예. – Goz
흠, 지금 당신의 문제를 봅니다. 그러나 "DiffuseSampler"가 있다면 확산 된 텍스처의 SRV를 주어진 슬롯에 바인딩해야한다는 것을 아는 것으로 충분합니까? * SetSamplers를 사용하여 DX10 샘플러 상태를 동일한 슬롯에 바인드해야하는지 확실하지 않습니다. – Stringer