Доступ к буферам в вершинных шейдерах (без использования SSBO) - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть довольно большой кусок данных (который слишком велик, чтобы поместиться в UBO), к которому я хотел бы получить доступ в вершинном шейдере.

В OpenGL 4.3 я просто использую SSBO и все готовос этим, однако, я теперь должен также поддержать людей до версии 3.2 или 3.3.Я изучил, как я могу получить доступ к буферу в вершинном шейдере, и из того, что я мог собрать, кажется, что я могу использовать TBO (или любой другой буфер) без необходимости делать что-то более сложное, например, управлять UBO.Затем я использовал бы хитрость с texelFetch() и захватил бы мои данные.

Однако этот сайт утверждает, что

GLSL также поддерживает доступ к картам текстуры в обоихвершинные и фрагментные шейдеры.Реализации могут выбрать поддержку текстурного отображения в вершинных шейдерах (при условии, что базовая реализация OpenGL поддерживает эту функциональность)

Теперь, если я проверю GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS и это ноль, я тост.Или есть другой более разумный способ для меня получить больший объем данных, чем тот, который поддерживает UBO в вершинном шейдере, для версии 3.2 - 3.3 GL, без возни с texelFetch()?

1 Ответ

0 голосов
/ 09 июля 2019

Это можно сделать с объектами текстурного буфера , если версия OpenGL недостаточно высока для поддержки SSBO.

...