2016-12-20 4 views
0

OpenGL FrameBuffer Objects (FBO)를 사용하여 GL_ARB_FRAMEBUFFER_OBJECT 또는 GL_EXT_FRAMEBUFFER_OBJECT 확장을 사용하여 텍스처를 렌더링합니다. 나는 FBO에 텍스처를 연결하려고 할 때 실패 있도록OpenGL 프레임 버퍼 크기 제한은 0입니다.

그러나, videocards (주로 인텔, OGL 2.0, 심지어 3.0) GL_ARB_FRAMEBUFFER_OBJECT을 지원하지만 GL_MAX_FRAMEBUFFER_WIDTH = 0 GL_MAX_FRAMEBUFFER_HEIGHT = 0을 갖는 상당수있다.

FBO가 이러한 비디오 카드에서 텍스처를 렌더링하는 데 사용할 수 없다는 것을 실제로 의미합니까? 해결 방법이 있습니까? 텍스처 렌더링은 매우 중요한 렌더링 기술이며 모든 곳의 Direct3D에서 잘 작동하므로 OpenGL을 사용하여 렌더링하는 방법도 있어야합니다. 나는 FBO에 텍스처를 연결하려고 할 때 실패 있도록

+1

아니요, 그렇지 않습니다. GL_MAX_FRAMEBUFFER_WIDTH는 적어도 16384가되어야합니다. 이것은 드라이버 버그 일지 모르지만 표시하지 않은 코드에서 버그 일 가능성이 더 높습니다. – ybungalobill

답변

4

그러나, (OGL 2.0, 심지어 3.0, 주로 인텔) GL_ARB_FRAMEBUFFER_OBJECT을 지원하지만 GL_MAX_FRAMEBUFFER_WIDTH=0GL_MAX_FRAMEBUFFER_HEIGHT=0을 가진 videocards의 상당수가있다.

어느 GL_ARB_framebuffer_objectGL_EXT_framebuffer_objectGL_MAX_FRAMEBUFFER_WIDTH 또는 GL_MAX_FRAMEBUFFER_HEIGHT을 정의 할.

이 열거 형은 실제로 GL_ARB_framebuffer_no_attachments (OpenGL 4.3 이후의 코어)에 추가되었으므로 일부 인텔 GPU에서는이를 지원하지 않습니다. 오류를 확인하려면 glGet에서 GL_INVALID_ENUM을 발견 했으므로 0을 반환하지 않으므로 get에 오류가 발생하여 이전과 같이 변수의 내용을 그대로 두십시오. 그러나 주요한 점은이 제한이 프레임 버퍼 에만 적용되고 어떤 것도 첨부되지 않고이므로 잘못된 속성을 쿼리하는 것입니다.

프레임 버퍼에 대한 명시적인 크기 제한은 없지만 각 첨부 파일 유형에 대한 크기 제한이 있습니다. Renderbuffers는 임의의 차원에서 최대로 GL_MAX_RENDERBUFFER_SIZE이고, 2D는 최대로 GL_TEXTURE_SIZE입니다. 한 번에 대상에 렌더링하려면 GL_MAX_VIEWPORT_DIMS을 신경 써야 할 수도 있습니다.