2010-12-17 5 views
4

Я смотрю на http://www.swiftless.com/tutorials/glsl/3_glcolor.html, которая имеет следующий фрагмент кода:gl_Color является необъявленный идентификатор на WebGL

void main() { 
// Set the output color of our current pixel 
gl_FragColor = gl_Color;} 

Я пытался использовать gl_Color на моем WebGL. Я получил сообщение об ошибке, что gl_Color является незаявленным идентификатором.

Что я сделал не так?

Заранее за вашу помощь.

ответ

8

WebGL использует Open GL ES 2.0 в качестве базы, поэтому вы должны использовать GLSL ES 1.0 для шейдеров. GLSL ES не имеет gl_Color, поэтому вам придется переписать этот шейдер.

+1

Спасибо за помощь. Я просто google GLSL ES 1.0. Он находится на http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf. Как получить доступ к эквиваленту gl_Color в GLSL ES 1.0? – pion 2010-12-17 13:14:30

-3

Я предполагаю, что вы пытаетесь скомпилировать GLSL-код с помощью обычного компилятора C.

Похоже, что это должен быть код C, но на самом деле это источник GLSL, который был скомпилирован компилятором OpenGL GLSL, а не вашим компилятором C.

Фрагментный шейдер имеет предопределенную переменную 'gl_Color', которая является выходом из вершинного шейдера.

Образец, на который вы ссылаетесь, имеет код внутри файла shader.frag, на который ссылается shader.init(). Сама библиотека OpenGL будет обрабатывать компиляцию в инструкции GPU для вашего компьютера. Поместите код в этот файл, и, надеюсь, пример будет работать :)

+0

Я забыл упомянуть, что я использую WebGL на своем оригинальном посте. Я модифицирую существующий пример WebGL (и GLSL), который уже работает. Я просто попытался включить gl_Color в вышеупомянутый учебник. Кажется, что у ечезе есть правильный ответ. Возможно, WebGL использует GLSL 1.0. – pion 2010-12-17 13:21:38

 Смежные вопросы

  • Нет связанных вопросов^_^