2009-12-31 6 views
1

Я пишу код, который предназначен для: 1. Отдайте текстуру OpenGL, используя FBO. 2. Нарисуйте из текстуры FBO в GLXPixmap, который прикреплен к X Pixmap. 3. Нарисуйте X Pixmap в окне на экране.Рендеринг OpenGL FBO Texture в GLXPixmap

Шаг 3 отлично работает, и шаг 2 отлично работает, если я заменил текстуру FBO нормальным рисунком OpenGL.

Но если я делаю то, что выше, по крайней мере с кодом, который у меня есть, он не работает. Если я дам GLXPixmap цветной фон и сделаю 1-3, окно на экране станет белым, но больше ничего не нарисовано.

Так что я надеюсь, что кто-то может предоставить советы или указать мне простой пример кода. Код, который у меня есть для этого, довольно запутан, но при необходимости я могу попытаться написать простую примерную версию для публикации здесь для обзора.

ответ

1

Если ваши последние два действия работают, но не используются FBO, которые вы создаете на первом шаге, вы, вероятно, неправильно инициализируете FBO. Некоторые вещи для проверки:

  • FBO "framebuffer complete"? Проверьте, используя glCheckFramebufferStatus(GL_FRAMEBUFFER_COMPLETE) после того, как вы приложите все свои текстуры и/или рендерингбуферы к нему.
  • У вас есть способ изучить FBO после его рендеринга (например, с помощью glGetTexImage), чтобы определить, есть ли проблема с записью в FBO или чтением из него?
  • Возможно, вы уже проверили, но стоит ли спрашивать: glGetError() возвращать любые ошибки?

Если все проверки пройдены правильно, а затем разместить некоторые настройки скелета и визуализации кода ... хотя менее запутанным, тем лучше, конечно =)

+0

Увы, я проверил статус FBO, и она будет завершена. И я проверяю glGetError, используя макрос, который сообщает, есть ли проблема, и никаких жалоб. Но я проверю glGetTexImage(), а также попытаюсь собрать простой образец - это само по себе может привести меня к решению. :-) –

+0

Еще одна простая вещь (не пытаясь оскорбить вас - я совершил эту ошибку несколько раз!), Чтобы убедиться, что вы последовательно используете GL_TEXTURE_2D и GL_TEXTURE_RECTANGLE –