2014-07-07 6 views
0

OpenGL ES 2.0에서는 두 텍스처의 비 출력이 매우 느립니다.FBO의 pow2 텍스처

그러나 내가 본 모든 "렌더링 - 투 - 텍스처"튜토리얼에서 사람들은 화면 크기 (결코 pow2가 아닌)를 취해서 텍스처를 만듭니다.

(투영 행렬 보정을 사용하여) pow2 텍스처로 렌더링해야합니까, 아니면 FBO에서 어떤 종류의 마법이 있습니까?

+1

POT FBO를 생성 한 다음 뷰포트를 사용하여 화면 크기를 설정하여 매트릭스 보정이 필요하지 않도록 할 수 있습니다. –

+0

@MaticOblak 뷰포트에 대해 생각하지 않았습니다. 감사합니다 :) – tower120

답변

0

질문에 "두 텍스처가 아닌 힘이 매우 느립니다"전제를 사지 않습니다. 우선, 이러한 종류의 성능 특성은 고도로 하드웨어 의존적 일 수 있습니다. ES 2.0에 대해 이것이 사실이라고 말하는 것은 일반적으로 의미가 없습니다.

지난 5 년에서 10 년 사이에 개발 된 GPU 아키텍처가 NPOT 텍스처로 렌더링 할 때 상당히 느릴 것입니다. 달리 표시되는 데이터가있는 경우이를 보는 데 매우 흥미가 있습니다.

대상 플랫폼에서 POT 텍스처가 더 빠르다고 보여주는 결정적인 데이터가 없으면 렌더링 대상에 자연색 크기를 사용하기 만하면됩니다.

POT 텍스처를 사용하고 싶다면 glViewport()을 사용하여 @MaticOblak에서 주석으로 지적한대로 glViewport()을 렌더링 할 수 있습니다.

위의 내용에 약간의주의가 있습니다. ES 2.0에는 NPOT 텍스처를 사용하는 방법에 몇 가지 제한이 있습니다. 표준에 따르면 밉 매핑을 지원하지 않으며 모든 랩 모드를 지원하지는 않습니다. 많은 기기에서 지원되는 GL_OES_texture_npot 확장 프로그램은 이러한 제한을 없애줍니다.

+0

아마도이 질문에 매우 관련되지 않습니다. 그러나 특정 크기의 NPOT 텍스처를 매번 다시 생성하는 것이 더 낫지 만, 더 큰 POT 텍스처를 가지는 것이 더 좋으며,'glTexImage2D'는 한 번만 생성됩니다. 내 말은, 어떤 종류의 텍스쳐 풀을 가질 이유가 있단 말인가? – tower120