Ответ 1
Возможно, вам стоит взглянуть на glScissor. Из документации:
В то время как тест ножницы разрешен, только пиксели, которые лежат в ножнице, могут быть изменены с помощью команд рисования.
Можно ли очистить весь экран при использовании функции glClear()? Мне нужно очистить только часть экрана, чтобы сохранить некоторое время рендеринга, иначе мне придется перерисовать половину экрана в каждом кадре, даже если ничего не происходит на другой половине.
Конечно, это должно быть сделано как можно быстрее (или быстрее), так как теперь glClear().
Возможно, вам стоит взглянуть на glScissor. Из документации:
В то время как тест ножницы разрешен, только пиксели, которые лежат в ножнице, могут быть изменены с помощью команд рисования.
Чтобы очистить только конкретную прямоугольную область, включите ScissorTest
и вызовите Clear
. После включения на экран будут задействованы только пиксели в области scissor, поэтому отключите ScissorTest
, когда вам нужно снова изменить внешнюю область.
Пример OpenTK:
GL.Enable (EnableCap.ScissorTest);
GL.Scissor (ViewportX, ViewportY, ViewportWidth, ViewportHeight);
GL.Clear (ClearBufferMask.ColorBufferBit);
GL.Disable (EnableCap.ScissorTest);
Нарисуйте гигантский квадратик:) Примените это только к половине экрана.
http://www.opengl.org/resources/faq/technical/transformations.htm#tran0090