Какое состояние теряется / сбрасывается после glUseProgram? - PullRequest
5 голосов
/ 06 февраля 2012

Это связано с Переключить шейдерную программу в WebGL , но я хотел бы еще раз задать вопрос, теперь у меня есть более четкое представление о проблеме и о чем я хочу спросить.

Я пытаюсь переключаться между различными программами шейдеров, но мне кажется, что не получается правильно отобразить объекты при переключении программ шейдеров в одном и том же рендере. Я думаю, что после вызова glUseProgram().

состояние потеряно или сброшено

Какое состояние теряется или сбрасывается после этого вызова? Другими словами, что мне нужно снова связать после glUseProgram()?

1 Ответ

0 голосов
/ 06 февраля 2012

Возможно, что ваши вершинные массивы и массивы атрибутов вершин имеют разные местоположения в других программах (например, this.locATex), такие же проблемы могут возникнуть, например, с привязками текстур и униформой сэмплера.Вам необходимо запросить те места атрибутов и «униформу текстурных блоков», которые вам нужно инициализировать самостоятельно, для каждой программы отдельно и соответствующим образом связать массивы и текстуры перед рисованием.Дальнейшие привязки «на другом конце» также могут разрываться, например, местоположения данных фрагмента.Но я предлагаю вам предоставить еще немного кода до того, как были изобретены новые проблемы: -).

...