2015-07-15 3 views
1

Недавно познакомившись с GLSL, я написал этот простой шейдер, который должен создать контур вокруг многоугольника, который рисуется в 2D-среде. Тем не менее, мне кажется, не в состоянии получить его прошлое компиляции, как это расстраивает меня со следующими ошибками:Проблема с компиляцией, простой GLSL-шейдер

Не удалось скомпилировать фрагмент шейдера: 0 (2): ошибка C0000: синтаксическая ошибка, неожиданный идентификатор, ожидая «{» на лексемы "текс" 0 (3): синтаксис ошибка, неожиданный ')', ожидая '::' в токен ")"

А вот шейдер в вопросе:

uniform vec2 stepSize; 
uniform sampler2d tex; 
vec4 borderEffect(vec4 col, vec2 texture Post, sampler2d texture) { 
    float outlineIntensity = 4*texture2d(texture, texturePos).a 
    - texture2d(texture, texturePos + vec2(stepSize.x, 0.0)).a 
    - texture2d(texture, texturePos + vec2(-stepSize.x, 0.0)).a 
    - texture2d(texture, texturePos + vec2(0.0, stepSize.y)).a 
    - texture2d(texture, texturePos + vec2(0.0, -stepSize.y)).a; 

    return mix(texture2d(texture, texturePos), col, outlineIntensity); 
} 

void main() { 
    gl_FragColor = gl_Color*borderEffect(vec4(0.0, 0.0, 0.0, 1.0), gl_TexCoord[0].xy, tex): 
} 

Итак, мой вопрос: что это за ошибки? и как я могу их исправить?

ответ

3

Он должен быть равномерным sampler2D, с большой «D» в вашей второй строке.

+0

Ничего себе, верно, не могу поверить, что я пропустил это. В любом случае, спасибо! –

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