WebGL: Доступ к текстуре в вершинном шейдере? - PullRequest
7 голосов
/ 03 декабря 2010

Можно ли читать текстуру в шейдере vertex с WebGL?

Я написал страницу WebGL (просто чтобы попробовать) и использовалChrome 7, чтобы проверить это.Как только я обновился до Chrome 8, он перестал работать.Я дважды проверил, что webgl включен.Ошибка:

'texture2D': не найдена соответствующая перегруженная функция

Когда я заменяю вызов texture2D константой, он работает.Доступ к текстуре в фрагментном шейдере с использованием той же текстуры также работает.

У кого-нибудь есть идеи?Меня особенно удивляет тот факт, что обновление Chrome привело к его поломке.

Обновление: Это работает в бета-версии Firefox 4.Я сообщил об ошибке в Chrome - проблема 65340

Обновление 2: Теперь он работает в Firefox и Chrome

Ответы [ 2 ]

6 голосов
/ 05 декабря 2010

На самом деле это не «ошибка» в Chrome.

Доступ к текстуре Vertex не является обязательной функцией Open GL ES 2, которая является основой спецификации WebGL.Я подозреваю, что, возможно, происходит то, что, хотя ваш базовый драйвер GL поддерживает доступ к текстуре вершин, теперь вы переключились на Chrome с использованием Angle, и Angle не сообщает, что доступ к текстуре вершин доступен как доступный.

Вы можетесравните свои версии FF и Chrome, используя

http://webgl -bench.appspot.com /

с Тэтчер Ульрих. Здесь есть параметр MAX_VERTEX_TEXTURE_IMAGE_UNITS (ближе к концу) Chrome /Angle всегда сообщает о 0.t

Еще одна вещь, которую нужно проверить, это то, что вы используете правильный синтаксис texture2D - спецификация изменилась, и, возможно, FF все еще поддерживает более старый синтаксис.

2 голосов
/ 07 декабря 2010

Хотелось бы прокомментировать, но у меня нет репутации.

Как сказал alanatmech, это может быть связано с Angle, который перенаправляет все вызовы GL в DirectX.Таким образом, это не исключение возможностей, и было бы полезно иметь поддержку WebGL на компьютерах с Windows без драйверов OpenGL.

Вы можете попробовать запустить Chrome с "--use-gl = desktop", поэтому он будет использовать бэкэнд рендеринга OpenGL вместо Angle.Ваш сайт не работает для меня с бета-версией Chrome 8.0.552.215, но не дает упомянутой вами ошибки, которую я получаю при сборке канаре Chrome 9.0.597.10 без флага AND на Minefield.

...