OpenGL: как очистить только часть экрана? - PullRequest
12 голосов
/ 12 июня 2010

Можно ли очистить весь экран при использовании функции glClear ()? Мне нужно очистить только часть экрана, чтобы сэкономить время рендеринга, иначе мне пришлось бы перерисовывать половину экрана каждый кадр, даже если на другой половине ничего не происходит.

Конечно, это должно быть сделано так же быстро (или быстрее), как сейчас у glClear ().

Ответы [ 3 ]

12 голосов
/ 12 июня 2010

Возможно, вы захотите заглянуть в glScissor.Из документации:

При включенном тесте ножниц с помощью команд рисования можно изменять только те пиксели, которые лежат в поле ножниц.

3 голосов
/ 02 марта 2016

Чтобы очистить только определенную прямоугольную область, включите ScissorTest и позвоните Clear.После включения команды рисования влияют только на пиксели в поле ножниц, поэтому отключайте ScissorTest, если вам нужно снова изменить внешнюю область.

Пример OpenTK:

GL.Enable (EnableCap.ScissorTest);
GL.Scissor (ViewportX, ViewportY, ViewportWidth, ViewportHeight);
GL.Clear (ClearBufferMask.ColorBufferBit);
GL.Disable (EnableCap.ScissorTest);
0 голосов
/ 12 июня 2010

Нарисуйте гигантский четырехугольник :) Примените это только к половине экрана.

http://www.opengl.org/resources/faq/technical/transformations.htm#tran0090

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...