2014-01-21 91 views
-2

我在這裏遇到了一個小問題,由於GLSL問題,我的渲染循環沒有渲染我的世界。
GLSL - 設置統一問題

程序更新渲染循環均勻:

map[mapPos].light = Lighting.checkSunLight(mapPosY, mapPosX, this); // It works good.. returns float 
Shaders.blockS.begin(); 
Shaders.blockS.setUniformf("lightBlock", map[mapPos].light); // Problem is here!!! 
Shaders.blockS.end(); 
batch.draw(map[mapPos].getBlockTexture(), (mapPosX * Block.WIDTH), (mapPosY * Block.HEIGHT),  Block.WIDTH, Block.HEIGHT); // Doesn't draw the block. 

只是,如果你好奇的片段着色器 -

varying vec4 vColor; 
varying vec2 vTexCoord; 

uniform vec2 screenSize; 

uniform sampler2D u_texture; 
uniform vec4 gameTime; 
uniform float lightBlock; 

const float RADIUS = 0.75; 

const float SOFTNESS = 0.6; 

void main() { 

    vec4 texColor = texture2D(u_texture, vTexCoord); 

    vec4 timedColor = (vColor + gameTime); 

    vec2 position = (gl_FragCoord.xy/screenSize.xy) - vec2(0.5); 
    float len = length(position); 

    float vignette = smoothstep(RADIUS, RADIUS-SOFTNESS, len); 

    texColor.rgb = mix(texColor.rgb, texColor.rgb * vignette, 0.5); 

    gl_FragColor = vec4(texColor.rgb * timedColor.rgb * lightBlock, texColor.a); 
} 

迂腐是

ShaderProgram.pedantic= false; 
+0

您可以檢查該行是否出現OpenGL錯誤? – Njol

回答

0

我我已經修好了,我只是移動了.end()的樂趣着色器程序的最後一行。

+0

我把'begin(...)'做成像'glUseProgram(glsl_prog)'和'end(...)''glUseProgam(GL_NONE)'這樣的東西嗎?如果有人在將來遇到類似的問題,那麼現在的答案並不是特別有用。你沒有提供足夠的上下文來解釋爲什麼這解決了你的問題。 –