2017-01-20 5 views
-2

Я работаю над проектом, в котором скрытые шейдеры скрыты в исходном коде. Я получил эту ошибку (во время выполнения):Ошибка компиляции шейдера

Error compiling vertex shader: 

Full VS shader source: 

//precision highp float; 

uniform vec2 uEyeToSourceUVScale; 
uniform vec2 uEyeToSourceUVOffset; 

attribute vec4 aPosition;   ///< [-1,+1],[-1,+1] over the entire framebuffer. Lerp factor in Pos.z. Vignette fade factorin Pos.w. 
attribute vec2 aTanEyeAnglesR; ///< The tangents of the horizontal and vertical eye angles for the red channel. 
attribute vec2 aTanEyeAnglesG; ///< The tangents of the horizontal and vertical eye angles for the green channel. 
attribute vec2 aTanEyeAnglesB; ///< The tangents of the horizontal and vertical eye angles for the blue channel. 

varying vec4 vPosition; 
varying vec2 vTexCoordR; 
varying vec2 vTexCoordG; 
varying vec2 vTexCoordB; 

void main(void) 
{ 
    vPosition = aPosition; 
    vTexCoordR = aTanEyeAnglesR * uEyeToSourceUVScale + uEyeToSourceUVOffset; 
    vTexCoordG = aTanEyeAnglesG * uEyeToSourceUVScale + uEyeToSourceUVOffset; 
    vTexCoordB = aTanEyeAnglesB * uEyeToSourceUVScale + uEyeToSourceUVOffset; 
    vTexCoordR.y = 1.0 - vTexCoordR.y; 
    vTexCoordG.y = 1.0 - vTexCoordG.y; 
    vTexCoordB.y = 1.0 - vTexCoordB.y; 
    gl_Position = vec4(aPosition.xy, 0, 1); 
} 

Shader compilation failed. 

Я не знаю, как подойти не решение этой проблеме (нет опыта шейдера); однако, я знаю, что шейдерный код похож на код C++, и в этом смысле это выглядит очень корректно для меня (если только я чего-то не хватает).

Что-то явно не так с этим кодом шейдера?

+0

Какое сообщение об ошибке вы получаете в журнале? –

+0

@Nicol: как проверить журнал? – George

+2

[См. Это] (https://www.khronos.org/opengl/wiki/Shader_Compilation#Example). [Или это] (http://stackoverflow.com/documentation/opengl/8685/shader-loading-and-compilation#t=201701200148341908547) –

ответ

1

Отсутствие директивы #version подразумевает #version 110.

gl_Position = vec4(aPosition.xy, 0, 1); 
           ^^ int literals 

#version 110 не поддерживает автоматическое int ->float преобразование. Используйте вместо float литералы:

gl_Position = vec4(aPosition.xy, 0.0, 1.0); 
           ^^^ ^^^ float literals 
+0

Спасибо за подсказку. Я попытался соответствующим образом изменить, и ошибка по-прежнему сохраняется. – George

+0

@George: Время для [mcve] тогда. – genpfault