문제

프래그먼트 셰이더를 사용하지 않고도 하드웨어 기반 YUV에서 RGB 색상 공간으로 변환할 수 있도록 YUV 색상 공간으로 텍스처를 생성하는 방법을 아는 사람이 있습니까?저는 NVidia 9400을 사용하고 있는데 트릭을 수행하는 것처럼 보이는 확실한 GL 확장이 보이지 않습니다.프래그먼트 셰이더를 사용하는 방법에 대한 예제를 찾았지만 현재 작업 중인 프로젝트는 OpenGL 1.1만 지원하며 이를 2.0으로 변환하고 필요한 모든 회귀 테스트를 수행할 시간이 없습니다.이것은 또한 Linux를 대상으로 합니다.다른 플랫폼에서는 MESA 확장을 사용해 왔지만 Nvidia 카드에서는 작동하지 않습니다.

도움이 되었습니까?

해결책

확장자를 사용해도 괜찮지 만 OpenGL 2.0으로 전부를 걱정하는 것이 걱정되므로 구식으로 간단한 조각 셰이더를 제공하는 것을 고려하십시오. ARB_FRAGMENT_PROGRAM 확대.

또는 Devil, Imagemagick 또는 FreeImage와 같은 도서관을 사용하여 전환을 수행 할 수 있습니다.

다른 팁

당신이 언급한 MESA 확장은 YCrCb용인가요?NVIDIA 카드가 이를 노출하지 않는다면 해당 텍스처 형식에 대한 지원을 노출하지 않았다는 의미입니다. 그만큼 카드가 지원한다고 말하는 방식입니다).

유일한 옵션은 텍스처 필터링 블록 외부에서 색상 변환을 수행하는 것입니다.(텍스처 데이터를 GL에 제출하기 전 또는 텍스처 필터링 블록에서 값을 가져온 후)

올바른 확장(dot3 텍스처 결합기 확장)이 있는 경우 GL1.1에서 선형 변환을 수행할 수 있으므로 GL이 여전히 도움이 될 수 있습니다.즉, 만병통치약과는 거리가 멀다.

그만한 가치가 있는 만큼, BINK 구현 MMX를 사용하여 CPU로 변환을 수행하는 것 같습니다(줄 사이를 읽는 중입니다).아마도 OpenGL로 로드하기 전에 SSE로 변환하여 동일한 작업을 수행할 것입니다.CPU ~이다 매 프레임마다 이 작업을 수행할 수 있을 만큼 빠릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top