I'm following this answer link
I include glew.h , linked to glew32s.lib and compile and link successfully.
Now that what's the draw command? I used to use a display callback function , and use glutDisplayFunc(myDisplay);
, glutMainLoop()
to draw.
What drawing functions should I use to draw to the buffer now?
Thank you!
My code:
#define GLEW_STATIC
//...
#include <GL/glew.h>
#include <GL/glut.h>
#include <GL/glu.h>
//...
int main(int argc, char *argv[]) {
//...
//This initializes glut
glutInit(&argc, argv);
//This tells glut to use a double-buffered window with red, green, and blue channels
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
// Initalize theviewport size
viewport.w = 400;
viewport.h = 400;
//The size and position of the window
glutInitWindowSize(viewport.w, viewport.h);
glutInitWindowPosition(0,0);
glutCreateWindow(argv[0]);
if(GLEW_OK!=glewInit()){return -1;}
GLuint fbo, render_buf;
glGenFramebuffers(1,&fbo);
glGenRenderbuffers(1,&render_buf);
glBindRenderbuffer(GL_RENDERBUFFER,render_buf);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGB8, viewport.w, viewport.h);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER,fbo);
glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, render_buf);
//Before drawing
glBindFramebuffer(GL_DRAW_FRAMEBUFFER,fbo);
myDisplay();
savePNG(outputPNGName,0,0,viewport.w,viewport.h);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
//At deinit:
glDeleteFramebuffers(1,&fbo);
glDeleteRenderbuffers(1,&render_buf);
}
// and whatever else
return 0;
}
savePNG:
glReadBuffer(GL_COLOR_ATTACHMENT0);
glReadPixels(x, y, width, height, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid *)image);