Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Disa от Апрель 21, 2013, 01:21



Название: GLES requires precision specifier on float types
Отправлено: Disa от Апрель 21, 2013, 01:21
У знакомого на нетбуке возникла проблема. Версия OpenGL - GLES. При компиляции шейдера (фрагментного), выдает:

Код:
error C7573: OpenGL/ES requires precision specifier on float types

Вот, например, тестовый:
Код
glSlang
#version 100
 
uniform vec4 color;
 
void main(void) {
 gl_FragColor = color;
}

Поменял uniform vec4 color на  uniform mediump vec4 color, результат точно такой же. Я до этого с GLES особо дела не имел. Если я правильно понял, компилятор хочет чтоб я указывал точность типа float, но почему он это снова хочет после указания я не понимаю. Или я не правильно использую синтаксис?

За ранее благодарен.


Название: Re: GLES requires precision specifier on float types
Отправлено: alex312 от Апрель 21, 2013, 06:50
добавь в начало шейдера строку
Код
precision mediump float;
 


Название: Re: GLES requires precision specifier on float types
Отправлено: Disa от Апрель 21, 2013, 23:40
Забыл сказать, что так тоже пробовал. Компилятор выдает дополнительно еще ошибку:
Код:
0(6) : error C0000: syntax error, unexpected reserved word "float", expecting reserved word "highp" or reserved word "lowp" or reserved word "mediump" or reserved word "superp" at token "float"

Шейдер вот такой:
Код
glSlang
#version 100
 
precision mediump float;
 
uniform vec4 color;
 
void main(void) {
 gl_FragColor = color;
}

и если писать uniform mediump  vec4 color те же ошибки.

PS: Если менять на #version 130, и убрать все deprecated объявления, то все работает. Но нужна именно #version 100.