i'm following opengl 3d game tutorial series thinmatrix , seems work fine except nothing appears in window. got 5th video.
my loader class
package org.voxsim; import java.nio.floatbuffer; import java.nio.intbuffer; import java.util.arraylist; import java.util.list; import org.lwjgl.bufferutils; import org.lwjgl.opengl.gl11; import org.lwjgl.opengl.gl15; import org.lwjgl.opengl.gl20; import org.lwjgl.opengl.gl30; public class loader { private list<integer> vaos = new arraylist<integer>(); private list<integer> vbos = new arraylist<integer>(); public models loadtovao(float[] pos, int[] ind) { int vaoid = createvao(); bindindbuffer(ind); storedata(0,pos); unbind(); return new models(vaoid, ind.length); } public void cleanup() { (int vao:vaos) { gl30.gldeletevertexarrays(vao); } (int vbo:vbos) { gl15.gldeletebuffers(vbo); } } private int createvao() { int vaoid = gl30.glgenvertexarrays(); vaos.add(vaoid); gl30.glbindvertexarray(vaoid); return vaoid; } private void storedata(int num, float[] data) { int vboid = gl15.glgenbuffers(); vbos.add(vboid); gl15.glbindbuffer(gl15.gl_array_buffer, vboid); floatbuffer buffer = storeinfloatbuffer(data); gl15.glbufferdata(gl15.gl_array_buffer, buffer, gl15.gl_static_draw); gl20.glvertexattribpointer(num,3,gl11.gl_float,false,0,0); gl15.glbindbuffer(gl15.gl_array_buffer, 0); } private void unbind() { gl30.glbindvertexarray(0); } private void bindindbuffer(int[] ind) { int vboid = gl15.glgenbuffers(); vbos.add(vboid); gl15.glbindbuffer(gl15.gl_element_array_buffer, vboid); intbuffer buffer = storeinintbuffer(ind); gl15.glbufferdata(gl15.gl_element_array_buffer, buffer, gl15.gl_static_draw); } private intbuffer storeinintbuffer(int[] data) { intbuffer buffer = bufferutils.createintbuffer(data.length); buffer.put(data); buffer.flip(); return buffer; } private floatbuffer storeinfloatbuffer(float[] data) { floatbuffer buffer = bufferutils.createfloatbuffer(data.length); buffer.put(data); buffer.flip(); return buffer; } }
my render class
package org.voxsim; import org.lwjgl.opengl.gl11; import org.lwjgl.opengl.gl20; import org.lwjgl.opengl.gl30; public class render { public void render(models model) { gl11.glcolor4f(0.5f, 0.9f, 0.2f, 1.0f); gl30.glbindvertexarray(model.getvaoid()); gl20.glenablevertexattribarray(0); gl11.gldrawelements(gl11.gl_triangles, model.getvertexcount(), gl11.gl_unsigned_int, 0); gl20.gldisablevertexattribarray(0); gl30.glbindvertexarray(0); } }
my model class
package org.voxsim; public class models { private int vaoid; private int vaonum; public models(int vaoid, int vaonum) { this.vaoid = vaoid; this.vaonum = vaonum; } public int getvaoid() { return vaoid; } public int getvertexcount() { return vaonum; } }
my main class
package org.voxsim; import static org.lwjgl.glfw.glfw.glfwwindowshouldclose; import static org.lwjgl.opengl.gl11.gl_false; import org.lwjgl.opengl.gl30; import org.lwjgl.opengl.glcapabilities; import org.voxsim.game.block; import org.voxsim.shaders.shader; import org.voxsim.shaders.static; public class game { static public int width = 600; static public int height = 400; static public int vsync = 1; static public string title = "voxsim"; static private loader loader = new loader(); static private render render = new render(); private static void loop() { shader shader = new static(); float[] v = { -0.5f,0.5f,0, -0.5f,-0.5f,0, 0.5f,-0.5f,0, 0.5f,0.5f,0 }; int[] ind = { 0,1,3, 3,1,2 }; models model = loader.loadtovao(v, ind); while (glfwwindowshouldclose(displaymanager.windowid) == gl_false) { displaymanager.updatedisplay(); shader.start(); render.render(model); shader.stop(); } shader.cleanup(); } public static void main(string[] args) { displaymanager.createdisplay(); displaymanager.updatedisplay(); loop(); loader.cleanup(); } }
i followed tutorial don't know what's wrong. running intel 4th gen i3 intel hd graphics 4400 4gb of ram on windows 10 opengl version 4.3, opencl version 1.2, , shader model version 5
Comments
Post a Comment