java - LWJGL: Shaders fail to load when initializing with PixelFormat and ContextAttribs -
java - LWJGL: Shaders fail to load when initializing with PixelFormat and ContextAttribs -
i have been trying basic shaders work day , got working version (kinda). whenever initialize display up-to-date method, shaders fail load, when old fashioned way (without pixelformat , contextattibs), shaders load dandy. here code using initialize opengl:
pixelformat pf = new pixelformat(); contextattribs ca = new contextattribs(3, 3).withforwardcompatible(true).withprofilecore(true); seek { display.setdisplaymode(new displaymode(width, height)); display.settitle("shader testing"); display.setlocation((int) (utils.screen_dim.getwidth() - width) / 2, (int) (utils.screen_dim.getheight() - height) / 2); display.setresizable(false); display.create(pf, ca); } grab (lwjglexception e) { utils.printerror("failed initialize display", true); }
and here how initialize shaders (a bit lengthy):
shdrpid = glcreateprogram(); vsid = glcreateshader(gl_vertex_shader); fsid = glcreateshader(gl_fragment_shader); stringbuilder vertexshadersource = new stringbuilder(); stringbuilder fragmentshadersource = new stringbuilder(); //loads vertex shader source try{ file vert_shdr_file = new file("src/vert.shdr"); bufferedreader reader = new bufferedreader(new filereader(vert_shdr_file)); string ln; while((ln = reader.readline()) != null) { vertexshadersource.append(ln).append('\n'); } reader.close(); }catch(ioexception e) { display.destroy(); e.printstacktrace(); system.exit(1); } //loads fragment shader source try{ file frag_shdr_file = new file("src/frag.shdr"); bufferedreader reader = new bufferedreader(new filereader(frag_shdr_file)); string ln; while((ln = reader.readline()) != null) { fragmentshadersource.append(ln).append('\n'); } reader.close(); }catch(ioexception e) { display.destroy(); e.printstacktrace(); system.exit(1); } //compile vertex shader glshadersource(vsid, vertexshadersource); glcompileshader(vsid); if(glgetshaderi(vsid, gl_compile_status) == gl_false) { system.err.println("failed load vertex shader..."); } //compile fragment shader glshadersource(fsid, fragmentshadersource); glcompileshader(fsid); if(glgetshaderi(fsid, gl_compile_status) == gl_false) { system.err.println("failed load fragment shader..."); } glattachshader(shdrpid, vsid); glattachshader(shdrpid, fsid); gllinkprogram(shdrpid); glvalidateprogram(shdrpid);
i did utilize out-of-date tutorial in order write shader loading script (here). here question:
what doing out-of-date? there more recent tutorial or place go larn more modern way load shaders?
java opengl shader lwjgl
Comments
Post a Comment