2012-03-18 3 views
7

GL_MAX_TEXTURE_SIZE 변형이 한 축의 텍스처 픽셀 치수를 반환하는지 또는 둘 다 (x, y)가 합산되었는지 알고 싶습니다.GL_MAX_TEXTURE_SIZE와의 혼동

예를 들어, 내 PC에서 나는 결과로 8192를 얻습니다. 8192 * 8192 * 4 (256mb) 또는 4096 * 4096 * 4 (64mb)의 텍스처를로드 할 수 있습니까? 그렇다면 왜 내 그래픽 카드에 1GB의 비디오 메모리가있을 때 이런 현상이 발생합니까 ??

+1

최대 텍스처 크기는 비디오 메모리의 양보다 하드웨어에있는 주소에 액세스하는 데 필요한 줄 수 (비트 수)와 관련이 있다고 생각합니다.하지만 물론 그럴 수도 있습니다. 그것은 순수하게 소프트웨어 관점에서 볼 때 언제나 내게 임의적 인 것처럼 보였으므로 하드웨어 제한 사항이어야합니다. – Robinson

답변

15

OpenGL 사양은 최대 1D/2D 텍스처 이미지 크기라고하므로 8192x8192- 이미지를 의미합니다. 음, 너비와 높이가 합쳐져서 의미가 무의미 할 것입니다. 크기에 대해서는 아무 것도 말하지 않기 때문에, 8000x192 텍스처는 4096x4096 텍스처와 꽤 다른 크기입니다. 적어도 곱셈은 더 합리적인 것이지만,이 경우 8192~90x90 텍스처를 의미합니다.

하지만 소금물로 그 값을 가져 가야합니다. 그것들은 실제로 구현 (하드웨어/드라이버)이 허용하는 것의 상한선이기 때문에 하드웨어의 비디오 메모리와 일치 할 필요는 없습니다. 실제로 프레임 버퍼, VBO와 같은 비디오 메모리에 저장되는 것들이 훨씬 많기 때문에 보수적 인 가치를 부여하는 것이 합리적입니다. 마찬가지로 드라이버 개발자가이 상수에 많은 관심을 기울이지 않아도됩니다 (ATI가 아닌가요?). 일부 기본값을 반환하면 실제로 텍스처가 실제로 커질 수 있습니다.

로빈슨 (Robinson)은 자신의 의견에서 텍스처 메모리가 특별한 종류의 2D 어드레싱/캐싱 모드를 제공하는 비디오 메모리의 특수 영역 일 수 있기 때문에 원시 메모리 이외의 다른 요소에도 의존 할 수 있다고 말합니다.

+0

멋진 게시물을 주셔서 감사합니다 :) – user1010005