OpenGL ES 2.0에서는 두 텍스처의 비 출력이 매우 느립니다.FBO의 pow2 텍스처
그러나 내가 본 모든 "렌더링 - 투 - 텍스처"튜토리얼에서 사람들은 화면 크기 (결코 pow2가 아닌)를 취해서 텍스처를 만듭니다.
(투영 행렬 보정을 사용하여) pow2 텍스처로 렌더링해야합니까, 아니면 FBO에서 어떤 종류의 마법이 있습니까?
OpenGL ES 2.0에서는 두 텍스처의 비 출력이 매우 느립니다.FBO의 pow2 텍스처
그러나 내가 본 모든 "렌더링 - 투 - 텍스처"튜토리얼에서 사람들은 화면 크기 (결코 pow2가 아닌)를 취해서 텍스처를 만듭니다.
(투영 행렬 보정을 사용하여) pow2 텍스처로 렌더링해야합니까, 아니면 FBO에서 어떤 종류의 마법이 있습니까?
질문에 "두 텍스처가 아닌 힘이 매우 느립니다"전제를 사지 않습니다. 우선, 이러한 종류의 성능 특성은 고도로 하드웨어 의존적 일 수 있습니다. ES 2.0에 대해 이것이 사실이라고 말하는 것은 일반적으로 의미가 없습니다.
지난 5 년에서 10 년 사이에 개발 된 GPU 아키텍처가 NPOT 텍스처로 렌더링 할 때 상당히 느릴 것입니다. 달리 표시되는 데이터가있는 경우이를 보는 데 매우 흥미가 있습니다.
대상 플랫폼에서 POT 텍스처가 더 빠르다고 보여주는 결정적인 데이터가 없으면 렌더링 대상에 자연색 크기를 사용하기 만하면됩니다.
POT 텍스처를 사용하고 싶다면 glViewport()
을 사용하여 @MaticOblak에서 주석으로 지적한대로 glViewport()
을 렌더링 할 수 있습니다.
위의 내용에 약간의주의가 있습니다. ES 2.0에는 NPOT 텍스처를 사용하는 방법에 몇 가지 제한이 있습니다. 표준에 따르면 밉 매핑을 지원하지 않으며 모든 랩 모드를 지원하지는 않습니다. 많은 기기에서 지원되는 GL_OES_texture_npot
확장 프로그램은 이러한 제한을 없애줍니다.
아마도이 질문에 매우 관련되지 않습니다. 그러나 특정 크기의 NPOT 텍스처를 매번 다시 생성하는 것이 더 낫지 만, 더 큰 POT 텍스처를 가지는 것이 더 좋으며,'glTexImage2D'는 한 번만 생성됩니다. 내 말은, 어떤 종류의 텍스쳐 풀을 가질 이유가 있단 말인가? – tower120
POT FBO를 생성 한 다음 뷰포트를 사용하여 화면 크기를 설정하여 매트릭스 보정이 필요하지 않도록 할 수 있습니다. –
@MaticOblak 뷰포트에 대해 생각하지 않았습니다. 감사합니다 :) – tower120