java - Rendering to an FBO in LWJGL -


i trying render basic quads fbo in lwjgl java, isn't rendering , not know why.

import static org.lwjgl.opengl.gl11.*; import static org.lwjgl.util.glu.glu.*;  import java.nio.bytebuffer; import java.nio.byteorder; import java.nio.floatbuffer; import java.nio.intbuffer;  import org.lwjgl.bufferutils; import org.lwjgl.lwjglexception; import org.lwjgl.sys; import org.lwjgl.input.keyboard; import org.lwjgl.input.mouse; import org.lwjgl.opengl.display; import org.lwjgl.opengl.displaymode; import org.lwjgl.opengl.extframebufferobject; import org.lwjgl.opengl.glcontext; import org.newdawn.slick.color;  import elec0.utils.camera; import elec0.utils.vector2f; import elec0.utils.vector3f;  public class lwjglfbo {     private camera camera = new camera();     private boolean running = true, wireframe = false;     private long lastfps;     private int fps;  //  boolean fboenabled = glcontext.getcapabilities().gl_ext_framebuffer_object;     private int ifbobuffer;      public void start()     {         initgl();         init();          lastfps = gettime();          while(!display.iscloserequested())         {             updatefps();             pollinput();               render();              display.update();             display.sync(60); // limit fps 60         }         display.destroy();         system.exit(0);     }      private void render()     {         glclear(gl_color_buffer_bit | gl_depth_buffer_bit);         glmatrixmode(gl_modelview);         glloadidentity();          /*glulookat(0, 0, 5, // set lookat                 0, 0, 0,                 0, 1, 0);*/          camera.render();          drawgrid(); // render fill, it's lines         int verts = 0;         extframebufferobject.glbindframebufferext( extframebufferobject.gl_framebuffer_ext, ifbobuffer );         glpushattrib(gl_viewport_bit);         glviewport( 0, 0, 800, 600);         glclear(gl_color_buffer_bit);           for(int z = 0; z < 20; ++z)         {             for(int y = 0; y < 20; ++y)             {                 for(int x = 0; x < 20; ++x)                 {                     glpushmatrix();                     gltranslatef(x, y, z);                     drawbox(); //                  verts+=24;                     glpopmatrix();                 }             }         } //        system.out.println(verts);          extframebufferobject.glbindframebufferext( extframebufferobject.gl_framebuffer_ext, 0);         glpopattrib();         // render         if(wireframe)             glpolygonmode( gl_front_and_back, gl_line );         else             glpolygonmode( gl_front_and_back, gl_fill );       }      private void drawbox()     {          /* draws sides of unit cube (0,0,0)-(1,1,1) */           glbegin(gl_polygon);/* f1: front */             glnormal3f(-1.0f,0.0f,0.0f);             glvertex3f(0.0f,0.0f,0.0f);             glvertex3f(0.0f,0.0f,1.0f);             glvertex3f(1.0f,0.0f,1.0f);             glvertex3f(1.0f,0.0f,0.0f);           glend();           glbegin(gl_polygon);/* f2: bottom */             glnormal3f(0.0f,0.0f,-1.0f);             glvertex3f(0.0f,0.0f,0.0f);             glvertex3f(1.0f,0.0f,0.0f);             glvertex3f(1.0f,1.0f,0.0f);             glvertex3f(0.0f,1.0f,0.0f);           glend();           glbegin(gl_polygon);/* f3:back */             glnormal3f(1.0f,0.0f,0.0f);             glvertex3f(1.0f,1.0f,0.0f);             glvertex3f(1.0f,1.0f,1.0f);             glvertex3f(0.0f,1.0f,1.0f);             glvertex3f(0.0f,1.0f,0.0f);           glend();           glbegin(gl_polygon);/* f4: top */             glnormal3f(0.0f,0.0f,1.0f);             glvertex3f(1.0f,1.0f,1.0f);             glvertex3f(1.0f,0.0f,1.0f);             glvertex3f(0.0f,0.0f,1.0f);             glvertex3f(0.0f,1.0f,1.0f);           glend();           glbegin(gl_polygon);/* f5: left */             glnormal3f(0.0f,1.0f,0.0f);             glvertex3f(0.0f,0.0f,0.0f);             glvertex3f(0.0f,1.0f,0.0f);             glvertex3f(0.0f,1.0f,1.0f);             glvertex3f(0.0f,0.0f,1.0f);           glend();           glbegin(gl_polygon);/* f6: right */             glnormal3f(0.0f,-1.0f,0.0f);             glvertex3f(1.0f,0.0f,0.0f);             glvertex3f(1.0f,0.0f,1.0f);             glvertex3f(1.0f,1.0f,1.0f);             glvertex3f(1.0f,1.0f,0.0f);           glend();      }      private void init()     {          mouse.setgrabbed(true);         camera.initcamera();         camera.farplane = 1000;         camera.initperspective();      }      private void initgl()     {            try {             display.setdisplaymode(new displaymode(800, 600));             display.create();             display.setvsyncenabled(true);         } catch (lwjglexception e) {             e.printstacktrace();             system.exit(0);         }          glviewport(0, 0, display.getwidth(), display.getheight());          glenable(gl_texture_2d); // enable texture mapping         glshademodel(gl_smooth); // enable smooth shading         glclearcolor(0.0f, 0.0f, 0.0f, 1.0f); // black background         glcleardepth(1.0); // depth buffer setup         glenable(gl_depth_test); // enables depth testing         gldepthfunc(gl_lequal); // type of depth testing          glmatrixmode(gl_modelview);         glloadidentity();           intbuffer buffer = bytebuffer.allocatedirect(1*4).order(byteorder.nativeorder()).asintbuffer(); // allocate 1 int byte buffer         extframebufferobject.glgenframebuffersext( buffer ); // generate          ifbobuffer = buffer.get();  //      glenable(gl_fog);  //          floatbuffer fogcolor = bufferutils.createfloatbuffer(4); //          fogcolor.put(0f).put(0f).put(0f).put(1f).flip(); //           //          int fogmode = gl_linear; //          glfogi(gl_fog_mode, fogmode); //          glfog(gl_fog_color, fogcolor); //          glfogf(gl_fog_density, 0.35f); //          glhint(gl_fog_hint, gl_dont_care); //          glfogf(gl_fog_start, 100.0f); //          glfogf(gl_fog_end, 500.0f);          // alpha blending         glenable(gl_blend);         glblendfunc(gl_src_alpha, gl_one_minus_src_alpha);          glmatrixmode(gl_modelview); // select modelview matrix         glhint(gl_perspective_correction_hint, gl_nicest);        }      private long lastf;       private void pollinput()     {         int x = mouse.getx();         int y = display.getheight() - mouse.gety();         float speed = .1f;         int ikeypressspeed = 50;         int idelta = getdelta();         speed *= idelta;          if(keyboard.iskeydown(keyboard.key_lshift))             speed *= 4;          if(keyboard.iskeydown(keyboard.key_w))         {             camera.moveforwards(speed);         }         if(keyboard.iskeydown(keyboard.key_s))         {             camera.moveforwards(-speed);         }         if(keyboard.iskeydown(keyboard.key_a))         {             camera.moveright(-speed);         }         if(keyboard.iskeydown(keyboard.key_d))         {             camera.moveright(speed);         }         if(keyboard.iskeydown(keyboard.key_space))         {             camera.moveup(speed);         }          if(keyboard.iskeydown(keyboard.key_escape))         {             display.destroy();             system.exit(0);         }         if(keyboard.iskeydown(keyboard.key_p))         {             if(gettime() - lastf > ikeypressspeed)                 wireframe = !wireframe;             lastf = gettime();         }         if(keyboard.iskeydown(keyboard.key_n))         {             if(gettime() - lastf > ikeypressspeed)             lastf = gettime();         }         if(keyboard.iskeydown(keyboard.key_c))         {             if(gettime() - lastf > ikeypressspeed)             lastf = gettime();         }          checkmousemove(x, y);     }      vector2f previous = new vector2f(), mousepos = new vector2f();     private float mouse_sensitivity = 4.0f;      private void checkmousemove(float x, float y)     {         float deltx, delty;         int centx = display.getwidth()/2, centy = display.getheight()/2;          deltx = (float)(centx - x) / mouse_sensitivity;         delty = (float)(centy - y) / mouse_sensitivity;          camera.rotate(delty, deltx, 0);          mouse.setcursorposition(centx, centy);     }      public long gettime()      {         return (sys.gettime() * 1000) / sys.gettimerresolution();     }      public void updatefps()      {         if (gettime() - lastfps > 1000) {             display.settitle("fps: " + fps);              fps = 0; //reset fps counter             lastfps += 1000; //add 1 second         }         fps++;     }      long lastframe;     public int getdelta()      {         long time = gettime();          int delta = (int) (time - lastframe);          lastframe = time;            return delta;        }      private void drawgrid()     {                glpushmatrix();          gldisable(gl_texture_2d);          glcolor3f(0.25f, 0.25f, 0.25f);          float gridsize = 30;         int mx = 64, mz = 64;          gltranslatef(-(mx+gridsize)/2, -5, -(mz+gridsize)/2);           for(int x = 0; x < mx; ++x)         {             for(int z = 0; z < mz; ++z)             {                 glbegin(gl_line_loop);                     glvertex3f(x, 0, z);                     glvertex3f(x+gridsize, 0, z);                     glvertex3f(x+gridsize, 0, z+gridsize);                     glvertex3f(x, 0, z+gridsize);                 glend();             }         }          glenable(gl_texture_2d);         glpopmatrix();     }      public static void main(string[] args)     {         lwjglfbo city = new lwjglfbo();         city.start();      } } 

i took time through code , may have missed couldn't find anywhere took fbo texture , rendered on screen.

i saw drew grid , drew cubes didn't see being bound of cubes.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

qt - Errors in generated MOC files for QT5 from cmake -