Использование буфера OpenGL для чтения и записи - PullRequest
0 голосов
/ 09 января 2019

В то время как флаг использования в glBufferData функции OpenGL известен как просто подсказка, а не как реальное ограничение, в документации говорится, что «DRAW» предназначен для «Пользователь пишет в него, а затем использует его для передачи в качестве аргумента другие функции OpenGL. " и «READ» - это «Этот буфер будет заполнен данными из GL, и пользователь захочет прочитать из него». но что, если я хочу, просто в качестве гипотетического использования, использовать графический процессор в качестве внешнего хранилища и просто записывать и позже читать из того же буфера (возможно, после того, как GL внес в него изменения)?

Битовые значения этих констант не предполагают, что я могу их объединить (например, GL_DYNAMIC_READ | GL_DYNAMIC_DRAW).

Есть ли какой-нибудь «лучший» флаг использования, который я могу использовать, чтобы намекнуть GL относительно «Я хочу использовать этот буфер в качестве хранилища для чтения и записи»?

1 Ответ

0 голосов
/ 10 января 2019

что если я хочу, просто в качестве гипотетического использования, использовать графический процессор в качестве внешнего хранилища и просто записывать и позже читать из того же буфера (возможно, после того, как GL внес в него изменения)?

Тогда либо вы перестанете заботиться о подсказке об использовании, либо не используете OpenGL. Буферные объекты OpenGL существуют для целей использования OpenGL. Они не для того, чтобы дать вам доступ к новому пулу памяти, с которым можно поиграть.

Особенно , поскольку этот "пул памяти" вполне может быть тем же самым пулом памяти, который malloc и др. Выделяет из. И вы ничего не можете сделать в OpenGL, чтобы гарантировать, что буферный объект будет храниться исходит из памяти графического процессора (или даже для проверки наличия выделенной памяти в графическом процессоре).

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

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