2013-10-14 3 views
0

Я работаю над рендерингом текстуры в QT с QGLWidget и QGLFramebufferObject. Мое намерение состоит в том, чтобы записывать значения с плавающей запятой в текстуру через шейдер.glclampcolor отсутствует в QT

Я использую текстуру GL_RGB32F, и RTT, похоже, происходит. Однако значения, хранящиеся в текстуре, зажаты между 0 и 1.

Контрольное значение gl_FragData [0] = vec4 (120.0, 2.0, 0.8, 1.0); в шейдере результаты в 1.0, 1.0, 0.8 в текстуре.

Я вижу сообщения, предполагающие, что вызовы glClampColor

glClampColorARB (GL_CLAMP_FRAGMENT_COLOR, GL_FALSE); glClampColorARB (GL_CLAMP_READ_COLOR, GL_FALSE);

избавится от этого зажима, но, к сожалению, я не могу найти этот вызов в QT 5.0.2. Кажется, что он удален после QT 4.3 внутри QOpenGLFunctions

Как я могу это достичь?

+0

Класс 'QOpenGLFunctions' предназначен для обеспечения доступа к API OpenGL/ES 2.0, который не определяет' glClampColor'. Вы можете попробовать перейти на Qt 5.1, который предоставляет класс QOpenGLFunctions для каждой версии OpenGL (см. Http://qt-project.org/doc/qt-5.1/qtdoc/classes.html#o). –

+0

как насчет зажима? http://www.opengl.org/wiki/Floating_point_and_mipmapping_and_filtering говорит, что GL_TGB32F не должен зажимать цвет? – fen

ответ

0

Спасибо всем за ваш ответ. Переход на 5.1 казался более трудоемким, поэтому я закончил использование glGetTexImage, чтобы скопировать всю текстуру и прочитать требуемый тексель. Он медленнее по сравнению с реализацией glReadPixels, но работает на данный момент. Когда у меня будет время для обновления, эти предложения определенно будут очень полезны.

Еще раз спасибо!

Смежные вопросы