2012-01-22 3 views
0

Когда я выдаю glViewport с моим новым разрешением, он, похоже, не обновляет размер фреймбуфера (спереди и сзади). Мой FBO, похоже, справляется с изменением размера просто отлично, потому что я просто повторно создаю текстуру FBO с новым размером.Изменение размера окна SDL OpenGL

Есть ли что-то, что мне не хватает, или такого рода вещи просто не поддерживаются в Linux? Я пытаюсь избежать вызова SDL_SetVideoMode, поэтому я могу придерживаться своего контекста OpenGL.

ответ

2

glViewport не влияет на размер окна. Действительно, никакая команда OpenGL не может изменить размер окна. Все glViewport делает это преобразование из нормализованного координатного пространства устройства в пространство окна. Он эффективно изменяет то, что часть окна, которое вы визуализируете, а не размер самого окна.

Размер окна управляется любой системой, создавшей окно. Если SDL не имеет функции для изменения размера окна, размер окна не может быть изменен.

+0

Итак, почему Linux не обновляет фреймбуфер? Это проблема с SDL? В Linux он по-прежнему отображает только левые 800 пикселей (мой начальный размер - 800x600, но по окнам он может рисовать на все окно) –

+0

@StevenLu: поскольку glViewport не изменяет размер фреймбуфера. Он выбирает ту часть фреймбуфера, на которую должна проектировать проекция. Он даже не установит правильное обрезание, для этого вам понадобится glScissor. – datenwolf