Каков наиболее эффективный способ (функция ogl) записать эти значения в текстуру для использования?
Хорошим способом было бы попытаться избежать ненужных лишних копий.Таким образом, вы можете использовать объекты пиксельного буфера , которые вы сопоставляете с вашим адресным пространством , и использовать это для непосредственного генерации ваших данных в.
, посколькувы хотите обновить эти данные для каждого кадра, вы также хотите искать эффективную буферную потоковую объектную , чтобы не вызывать неявную синхронизацию между CPU и GPU.Простой способ сделать это в вашем сценарии - использовать кольцевой буфер из 3 PBO, который вы продвигаете каждый кадр.
Вещи, которые были предложены в другом месте, что я не думаю, что хочуиспользуйте (пожалуйста, дайте мне знать, если я ошибаюсь):
- glDrawPixels () - у меня сложилось впечатление, что это будет вызывать прерывание каждый раз, когда я его вызываю, чтоон медленный, особенно при высоких разрешениях.
Ну, то, что делает драйвер, полностью зависит от реализации.Я не думаю, что «вызывать прерывание каждый раз» - полезный мысленный образ здесь.Вы, кажется, полностью недооцениваете работу, которую реализация GL будет выполнять за вашей спиной.Вызов GL не будет соответствовать какой-либо команде, отправляемой в графический процессор.
Но не использовать glDrawPixels
- все еще хороший выбор.Это не очень эффективно, и оно устарело и удалено из современного GL.
Используйте шейдер - я не думаю, что шейдер может принимать и обрабатывать объем данных в массиве каждого кадра (в других местах упоминалось, что ограничение на объем данных, которые они могут принимать, слишком мало)
Вы все неправильно поняли. не нельзя использовать с помощью шейдера.Если вы не пишете его самостоятельно (например, используя старый «конвейер фиксированных функций» GL), драйвер GPU предоставит вам шейдер.Аппаратная реализация для этих более ранних этапов с фиксированными функциями была полностью заменена программируемыми модулями - поэтому, если вы не можете сделать это с помощью шейдеров, вы не можете сделать это с помощью графического процессора.И я настоятельно рекомендую написать свой собственный шейдер (так или иначе, это единственный вариант в современном GL).