게임에서 소프트웨어 렌더링을 사용하여 전체 화면 팔레트 (8 비트) 이미지를 메모리에 그립니다.Direct3D 9가있는 빠른 팔레트 화면 블리트
Direct3D를 사용하여 화면에 이미지를 저장하는 가장 빠른 방법은 무엇입니까?
현재 소프트웨어에서 팔레트 된 이미지를 RGB로 변환 한 다음 으로 잠근 D3DUSAGE_DYNAMIC
텍스처에 올려 놓습니다.
더 빠른 방법이 있습니까? 예 : palettization을 수행하기 위해 쉐이더를 사용합니까?
관련 질문 :
- Fast paletted screen blit with OpenGL - OpenGL을
- How do I improve Direct3D streaming texture performance?와 같은 질문 - SDL 저자
예, 나는 확신한다. 32 비트 DirectDraw 대 8 비트 Palette DirectDraw에서 CPU 사용량이 급격히 증가합니다. 지금 쉐이더를 살펴보고 있는데, 고마워요 (팔레트 텍스처를 샘플러 유니폼 변수에 바인딩하는 방법을 찾으려고합니다). –
팔레트는 256 개의 엔트리 밖에 없으므로 텍스처 블렌딩이나 다른 것들을 활용할 필요가 없습니다. 팔레트 엔트리에 상수 버퍼를 사용할 수 있습니다. 이것은 텍스처를 사용하는 것보다 셰이더/바인딩 측에서 조금 더 간단합니다. D3D11로 가정). – mattnewport
방금 D3D9를 사용하고 있다는 것을 눈치 챘지만 팔레트 조회에 상수를 사용할 수 있어야하지만 D3D9의 픽셀 쉐이더에서 인덱스가있는 상수 조회가 제한되어 있으므로 팔레트 텍스처가 아마도 그렇습니다. 가다. – mattnewport