2016-11-20 10 views
0

다른 형식으로 다른 텍스처를로드하려고하지만 R, G 및 B 값만있는 몇 가지 형식 만 작동합니다. A1R5G5B5와 같은 형식은 전혀 작동하지 않는 것 같습니다.텍스처에 일부 D3DFORMAT를 사용할 수 없습니다.

나는 일반 D3D9 텍스처에 이러한 형식을 추가하려고 해요 :

IDirect3DTexture9* texpage; 
D3DXCreateTexture(device, 512, 512, 1, D3DUSAGE_RENDERTARGET, group->format, D3DPOOL_DEFAULT, &texpage) 

을 따라서 직선 질문에, 어떤 조건 작업하는 형식을 얻기 위해 충족하기 위해 내가해야합니까?

+0

Direct3D 장치는 렌더링 대상으로 Direct3D 장치를 지원해야합니다. 대부분의 Direct3D 9 시대 하드웨어는''D3DFMT_R5G6B5'' 렌더링을 지원했습니다. ''IDirect3D9 :: EnumAdapterModes''를 통해 지원을 확인해야합니다. 더 나은 옵션은 대신 Direct3D 11을 사용하고 [Direct3D 하드웨어 기능 수준] (https://msdn.microsoft.com/en-us/library/windows/desktop/mt186615.aspx)에 대해 알아보십시오. –

+0

답장을 보내 주셔서 감사합니다. 슬프게도 저는 D3D9를 사용해야합니다. 그래서 이것 모두가 하드웨어에 달려 있습니까? 코드에 아무것도 없습니까? 알파는 내게 가장 중요한 것인데, 알파 + R5G5B5/R3G2B3 또는 8 이외의 모든 것이 놀랄 것입니다. EnumAdapterModes를 확실히 확인해 보겠습니다. – braffolk

+0

D3D9를 사용해야하는 이유는 무엇입니까? Windows XP 서비스 팩 3 또는 Windows Server 2003 SP1을 지원해야합니까? –

답변

0

그러나 질감을로드하려고 할 때 D3DUSAGE_RENDERTARGET 플래그를 사용하여 텍스처를 만들려고했습니다. 렌더 타겟은 일반적으로 샘플링에 사용되는 텍스처보다 호환성이 훨씬 적습니다. A1R5G5B5 [2] 그것이 후방 버퍼 포맷이지만, 지원은 (분명히) 보편적이지 않습니다. 사실, Direct3D9는 특정 형식에 대한 지원을 보장하지 않습니다.

이 요구 사항을 제거하면 더 나은 호환성을 얻을 수 있지만 앞에서 말했듯이 모든 장치가이 형식을 지원한다는 보장은 없습니다. IDirect3D9::CheckDeviceFormat을 사용하여 호환성을 확인할 수 있습니다. 형식이 지원되지 않으면 오프라인으로로드하는 파일을 대체 형식으로 더 잘 지원되는 형식으로 미리 변환하는 것이 좋습니다 (예 : A8R8G8B8이 지원되지 않는 드라이버를 본적이없는 경우).