2012-10-13 7 views
1

부동 소수점 계산을위한 내부 형식으로 GL_FLOAT를 사용하여 framebuffer 객체에 렌더링해야합니다. 나는 다음과 같은 기본 OpenGL을 호출하여이를 달성하는 방법을 알고하십시오 FBO에 렌더링 QPainter를 사용하려면QGLFramebufferObject 부동 소수점 텍스처

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, width, height, 
      0, GL_RGBA, GL_FLOAT, NULL); 

QGLFramebufferObject이 필요합니다. 그러나 QGLFramebufferObject는 유형을 설정하는 것을 허용하지 않고 텍스처의 내부 형식 및 형식 (내 경우에는 색상 첨부에 사용됨) 만 허용합니다.

Qt 4.8에서 QGLFramebufferObject에 부동 소수점 정밀도를 사용하는 방법이 있습니까?

필자는 어떻게 든 Qt를 패치하고 다시 컴파일 할 수 있다는 것을 알고 있습니다.하지만 그것은 성 가시고 우아하지 않습니다. 나는 또한 내 자신의 FramebufferObject 클래스를 작성하는 것을 고려했다. 그러나 그 중 하나는 QPaintDevice로부터 파생되어야하고, 그것과 함께 커스텀 QPaintEngine을 제공해야한다. Qt는 분명히 paintengine을 가지고 있기 때문에 좋은 해결책은 아니지만 액세스 할 수는 없습니다.

답변

0

내부 형식은 텍스처 부동 소수점을 만드는 것입니다. 예를 들어 :

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 
     0, GL_RGBA, GL_FLOAT, NULL); 

하지 부동 소수점 텍스처입니다. 이것은 8 비트/컴포넌트 부호없는 정규화 된 텍스처입니다. 그게 바로 GL_RGBA8의 의미입니다.

따라서 QGLFramebufferObject의 내부 형식을 사용 가능한 부동 소수점 형식 중 하나로 설정하면됩니다.

+0

감사합니다. 이것은 OpenGL 문서에서 명확하지 않았습니다. – user1743345