Да, эти два способа, как вы это сделали бы в OpenGL 1.0. Я не думаю, что есть какие-то другие средства в отношении спецификации 1.0. Ссылка: https://www.opengl.org/registry/doc/glspec10.pdf
Обратите внимание, что текстуры хранятся в памяти устройства (GPU), которая быстро доступна для затенения. И вышеприведенные подходы копируют его между памятью хоста (CPU) и памятью устройства. Следовательно, производительность - это скорость копирования хост-устройства.
Почему вы ограничены спецификацией OpenGL 1.0. Вы можете пойти выше, а затем начать получать больше опций.
- Использование GLSL-шейдеров для непосредственного редактирования контента из одной текстуры и вывода его на другую текстуру. Обработка будет производиться на графическом процессоре, и копия устройства-устройства будет такой же быстрой, как и она.
- Использование CUDA. Сопоставьте текстуру с массивом CUDA, используйте свое ядро для изменения содержимого. Или используйте OpenCL для карт, отличных от NVIDIA.
Это был бы лучший сценарий, если модификация может быть выполнена параллельно, это принесет пользу.
Я бы предложил попробовать метод копирования процессора, поскольку он может быть достаточно быстрым для ваших нужд. Скопируйте хост-устройство быстрее с помощью новейшего оборудования. Возможно, вы сможете получить в реальном времени 60 кадров в секунду или выше даже с этой копией, если только у нее много текстур, для которых вы планируете это выполнить.
не могли бы вы подтвердить, помог ли мой ответ? – Harish
Ну, я полагаю, я не получаю больше ответов. И если альтернативы нет, тогда я счастлив, зная это. – Agggg