2010-10-26 1 views
1

На машине MAC OS X я использую FBO, глубину RBO и текстуру RBO с помощью freeglut, чтобы визуализировать 3D-сцену для FBO и делать рендер для текстуры. Все используют стандартные функции перенасыщения и glutMainLoop в конце.glutHideWindow и glReadPixels на OS X

Я использую glReadPixels для чтения из FBO. Я вижу, что пиксели читаются правильно.

Однако, когда я скрываю окно переполнения с помощью glutHideWindow, я обнаружил, что весь буфер, который извлекается glReadPixels, установлен на очистку цвета (ff 00 00 00). Я ничего не меняю. Я думаю, что FBO вообще не отображается, когда окно скрыто. Как мне это изменить? Это наблюдается на MAC OS X. Пожалуйста, дайте мне знать, если вы хотите посмотреть на код.

ответ

1

Окно не может быть покрыто, или буфер не будет обновлен. Решение заключается в рендеринг в буфер вне экрана (если ваша карта поддерживает его). В противном случае держите окно над другими, иначе буфер будет недействительным.

EDIT: это имеет отношение к оконной системы, а не с OpenGL

+0

любые имеющиеся примеры визуализации в закадровый буфер? –

+0

Также, как установить оконную систему в OS X в этом случае, чтобы она обновлялась? Я использую перенасыщение. –

+0

Извините, я не знаю, для OS X, но для Linux это не поддерживается. Для визуализации без экрана это может помочь http://stackoverflow.com/questions/214437/opengl-fast-off-screen-rendering. Если pbuffers поддерживаются вашей картой, вы можете это использовать. –