Я хочу иметь одну программу шейдера, в которой есть этап Compute вместе со стандартными этапами графики (вершина, tess control, tess eval, fragment).
К сожалению, если я присоединю этап Compute к остальным программы, а затем связать ее, вызовы запросов местоположения, таких как glGetAttribLocation (для униформ / атрибутов на любом этапе), начинают возвращать -1
, указывая, что им не удалось найти названные объекты. Я также пробовал использовать layout (location = N), в результате чего ничего не рисовалось.
Если я прикреплю этапы к двум разным шейдерным программам и использую их одну за другой, обе будут работать хорошо (вычислительный шейдер записывает в VBO, а шейдер отрисовки читает из того же VBO), за исключением того, что я должен переключаться между ними.
Существуют ли ограничения на объединение этапа вычислений со стандартными этапами графики? Во всех примерах, которые я могу найти, есть две программы, но я не нашел объяснения, почему это должно быть так.