Сбросить glViewport после рисования в фреймбуфере - PullRequest
1 голос
/ 05 августа 2020

Я рисую на большом opengl холсте. Иногда мне нужно рисовать на небольших фреймбуферах (плитках), а затем go обратно, чтобы рисовать на моем холсте. Проблема в том, что когда я рисую фреймбуферы, я, очевидно, меняю область просмотра контекста, поэтому, когда я go снова рисую на своем холсте, очевидно, что область просмотра нужно изменить. Я ищу способ сохранить и восстановить настройки glViewport. Примерно так в псевдокоде:

saveViewport();
drawFramebuffers(); // this change the viewport
restoreViewport();

Возможно ли подобное?

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Для контекстов совместимости glPushAttrib() / glPopAttrib() с GL_VIEWPORT_BIT сохранит / восстановит диапазон глубины и состояние области просмотра.

0 голосов
/ 06 августа 2020

В дополнение к ответу @genpfault также работает следующее:

// save viewport
GLint aiViewport[4];
glGetIntegerv(GL_VIEWPORT, aiViewport);

// do your stuff and then restore viewport
glViewport(aiViewport[0], aiViewport[1], (GLsizei)aiViewport[2], (GLsizei)aiViewport[3]);

Это было взято из здесь

...