2016-07-07 5 views
0

У обоих SDL и Game Maker есть концепция поверхностей, изображений, которые вы можете изменять на лету и отображать их. Я использую OpenGL 1, и я хотел бы знать, имеет ли openGL эту концепцию Surface.Облицовочные поверхности в OpenGL

Единственный способ, который я придумал был:

  • Каждый кадр создать/разрушить новую текстуру, основанную на потребностях.
  • Каждый кадр, обновляющий текстуру, основанную на потребностях.

Эти подходы, похоже, не очень эффективны, но я не вижу альтернативы. Возможно, именно так они реализованы в упомянутых двигателях.

+0

не могли бы вы подтвердить, помог ли мой ответ? – Harish

+0

Ну, я полагаю, я не получаю больше ответов. И если альтернативы нет, тогда я счастлив, зная это. – Agggg

ответ

0

Да, эти два способа, как вы это сделали бы в OpenGL 1.0. Я не думаю, что есть какие-то другие средства в отношении спецификации 1.0. Ссылка: https://www.opengl.org/registry/doc/glspec10.pdf

Обратите внимание, что текстуры хранятся в памяти устройства (GPU), которая быстро доступна для затенения. И вышеприведенные подходы копируют его между памятью хоста (CPU) и памятью устройства. Следовательно, производительность - это скорость копирования хост-устройства.

Почему вы ограничены спецификацией OpenGL 1.0. Вы можете пойти выше, а затем начать получать больше опций.

  1. Использование GLSL-шейдеров для непосредственного редактирования контента из одной текстуры и вывода его на другую текстуру. Обработка будет производиться на графическом процессоре, и копия устройства-устройства будет такой же быстрой, как и она.
  2. Использование CUDA. Сопоставьте текстуру с массивом CUDA, используйте свое ядро ​​для изменения содержимого. Или используйте OpenCL для карт, отличных от NVIDIA.

Это был бы лучший сценарий, если модификация может быть выполнена параллельно, это принесет пользу.

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

Смежные вопросы