GLSL Shader Draws Only Black Screen LWJGL -
i new shaders, , got glsl code compile (well without compiler errors), , reason keep getting black screen. using lwjgl. keep getting black screen when try render triangle, though should white according color passed fragment shader. i've posted snippets of code below, there's enough figure out problem is.
fragment shader source code
void main() { gl_fragcolor = vec4(1.0f, 1.0f, 1.0f, 1.0f); {
vertex shader source code
void main() { gl_position = ftransform(); }
shader reader code
vertshaderstring = shadername + ".vert"; fragshaderstring = shadername + ".frag"; shader = gl20.glcreateprogram(); vertshader = gl20.glcreateshader(gl20.gl_vertex_shader); try{ string temp; bufferedreader reader = new bufferedreader(new filereader(new file(vertshaderstring))); while ((temp = reader.readline()) != null){ vertsource.append(temp).append("\n"); } reader.close(); bufferedreader fragreader = new bufferedreader(new filereader(new file(fragshaderstring))); string othertemp; while ((othertemp = fragreader.readline()) != null){ fragsource.append(othertemp).append("\n"); } fragreader.close(); }catch (exception e){ e.printstacktrace(); }
shader setup code
gl20.glshadersource(vertshader, vertsource); gl20.glcompileshader(vertshader); if (gl20.glgetshaderi(vertshader, gl20.gl_compile_status) == gl11.gl_false){ system.err.println("failed compile vertex shader"); } gl20.glshadersource(fragshader, fragsource); gl20.glcompileshader(fragshader); if (gl20.glgetshaderi(fragshader, gl20.gl_compile_status) == gl11.gl_false){ system.err.println("failed compile fragment shader"); } gl20.glattachshader(shader, vertshader); gl20.glattachshader(shader, fragshader); gl20.gllinkprogram(shader); gl20.glvalidateprogram(shader);
enable , disable shader code
public void begin(){ gl20.gluseprogram(shader); } public void end(){ gl20.gluseprogram(0); }
render method
public void render(){ gl11.glclearcolor(0, 0, 0, 1); gl11.glclear(gl11.gl_color_buffer_bit); gl11.glcolor4f(1, 0, 0, 1); shader.begin(); gl11.glbegin(gl11.gl_triangles); gl11.glvertex2i(0, 0); gl11.glvertex2i(500, 0); gl11.glvertex2i(250, 250); gl11.glend(); shader.end(); }
the problem has been solved, jozxyqk. had forgotten initialize fragment shader variable.
fragshader = gl20.glcreateshader(gl20.gl_fragment_shader);
by adding line of code problem solved.
Comments
Post a Comment