эффективный доступ к texel в OpenGL - PullRequest
0 голосов
/ 08 апреля 2009

Я работаю над игрой в OpenGL, и вот что я хотел бы сделать:

  1. Во время итерации игровой логики обращайтесь к текселям текстуры для вычислений.
  2. Все еще во время того же логического взаимодействия, возможно, измените тексели текстуры.
  3. Визуализация игровой сцены с текущей версией текстуры.
  4. Начать еще одну итерацию с аналогичным доступом к данным texel.

У меня проблемы с использованием glGetTexImage (), поскольку вызов вызывает сбой моей программы, и я не совсем уверен, что это то, что я хочу использовать в любом случае.

Единственный простой способ, которым я могу это сделать, - это иметь в системной памяти буфер с тексельской информацией, с которой я могу возиться, и генерировать новую текстуру OpenGL из нее каждую итерацию. Это кажется плохим ходом.

Любая помощь?

Ответы [ 2 ]

3 голосов
/ 08 апреля 2009

Есть несколько возможных способов сделать это.

  1. Если вам не нужны нетекстурированные данные для изменения текстуры, вы можете использовать фрагментный шейдер. ( техника пинг-понга может быть интересна для этого)
  2. Используйте glTexSubImage2D, если заменена только небольшая часть текстуры и вам не нужно беспокоиться о производительности или она должна работать на старых графических картах.
  3. Использовать пиксельный буферный объект . Это должно быть быстрее, чем glTexSubImage2D. Еще немного информации об этом можно найти здесь .
0 голосов
/ 08 апреля 2009

Я считаю, glTexSubImage2d - это то, что вы ищете.

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