Масштабирование содержимого кадрового буфера OpenGL ES - PullRequest
0 голосов
/ 22 ноября 2011

В настоящее время я уменьшаю содержимое моего кадрового буфера OpenGL ES 1.1 следующим образом:

  1. сохраняем текущие ссылки на кадровый буфер и рендер-буфер
  2. bind framebuffer2 и меньший Renderbuffer
  3. перерисовать все содержимое
  4. теперь smallRenderbuffer содержит «уменьшенное» содержимое framebuffer
  5. делать вещи с содержимым lowerRenderbuffer
  6. повторно привязывать кадровый буфер и renderbuffer

Какой альтернативный способ сделать это? Возможно, я могу просто скопировать и масштабировать содержимое оригинального кадрового буфера и рендеринга в кадровый буфер2 и меньший буферный буфер.Следовательно, избегая повторного рендеринга.Я смотрел на glScalef, но я не уверен, куда идти.

Примечание: все это сделано в OpenGL ES 1.1 на iOS.

1 Ответ

1 голос
/ 22 ноября 2011

Вы можете выполнить первоначальный рендеринг в текстуру, а затем рендерить из этого в буфер кадра, который вы хотите видеть, и в уменьшенную версию. Независимо от того, как вы на это смотрите, вы пытаетесь использовать данные, которые были отрисованы, как источник для другого рендеринга, так что рендеринг в текстуру является наиболее естественной вещью.

Вы, вероятно, уже знакомы с семантикой рендеринга в текстуру, если вы работаете над миниатюрной версией, но для полноты: вы бы создали объект буфера кадров, используйте glFramebufferTexture2DOES, чтобы присоединить именованную текстуру. к подходящей точке присоединения, затем привязайте либо буфер кадра, либо текстуру (при условии, что другой не будет одновременно связан, если вы хотите определенное поведение) в зависимости от ситуации.

...