fms
August 14th, 2005, 12:09 AM
Hi,
I am trying to read the framebuffer but so far it is returning me zeros or black.
Here is the code:
##################################################
#include <stdio.h>
#include <C:\Program Files\NVIDIA Corporation\Cg\include\GL\glut.h>
#define XSCREEN 64 // width
#define YSCREEN 64 // height
GLubyte buffer[YSCREEN * XSCREEN * 4];
void GLUTInit (int*, char**);
void Init (void);
void Display (void);
void Draw (void);
void ReadTexture (void);
void Error (void);
int main (int argc, char** argv)
{
GLUTInit (&argc, argv);
Init ();
glutDisplayFunc (Display);
glutMainLoop ();
return 0;
} // main
void GLUTInit (int* argc, char** argv)
{
glutInit (argc, argv);
glutInitWindowSize (XSCREEN, YSCREEN);
glutInitDisplayMode (GLUT_RGBA | GLUT_ALPHA);
glutCreateWindow ("glReadPixels");
} // GLUTInit
void Init (void)
{
glClearColor (0.0, 0.0, 0.0, 1.0);
glClearDepth (1.0f);
} // Init
void Display (void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Draw ();
} // Display
void Draw (void)
{
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho (0, XSCREEN, 0, YSCREEN, 0, 1);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
glViewport (0, 0, XSCREEN, YSCREEN);
glColor3f (1.0, 1.0, 1.0);
glBegin (GL_QUADS);
glVertex2f (0, 0);
glVertex2f (XSCREEN, 0);
glVertex2f (XSCREEN, YSCREEN);
glVertex2f (0, YSCREEN);
glEnd ();
glFinish ();
ReadTexture ();
} // Draw
void ReadTexture (void)
{
Error ();
glReadPixels (0, 0, XSCREEN, YSCREEN, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
Error ();
} // ReadTexture
void Error (void)
{
GLenum errCode;
const GLubyte* errString;
if ((errCode = glGetError ()) != GL_NO_ERROR)
{
errString = gluErrorString (errCode);
printf ("GL Error : %s\n", errString);
}
} // Error
##################################################
I would really appreciate if someone could help me find the bug in this code.
Please help.
Thanks.
I am trying to read the framebuffer but so far it is returning me zeros or black.
Here is the code:
##################################################
#include <stdio.h>
#include <C:\Program Files\NVIDIA Corporation\Cg\include\GL\glut.h>
#define XSCREEN 64 // width
#define YSCREEN 64 // height
GLubyte buffer[YSCREEN * XSCREEN * 4];
void GLUTInit (int*, char**);
void Init (void);
void Display (void);
void Draw (void);
void ReadTexture (void);
void Error (void);
int main (int argc, char** argv)
{
GLUTInit (&argc, argv);
Init ();
glutDisplayFunc (Display);
glutMainLoop ();
return 0;
} // main
void GLUTInit (int* argc, char** argv)
{
glutInit (argc, argv);
glutInitWindowSize (XSCREEN, YSCREEN);
glutInitDisplayMode (GLUT_RGBA | GLUT_ALPHA);
glutCreateWindow ("glReadPixels");
} // GLUTInit
void Init (void)
{
glClearColor (0.0, 0.0, 0.0, 1.0);
glClearDepth (1.0f);
} // Init
void Display (void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Draw ();
} // Display
void Draw (void)
{
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho (0, XSCREEN, 0, YSCREEN, 0, 1);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
glViewport (0, 0, XSCREEN, YSCREEN);
glColor3f (1.0, 1.0, 1.0);
glBegin (GL_QUADS);
glVertex2f (0, 0);
glVertex2f (XSCREEN, 0);
glVertex2f (XSCREEN, YSCREEN);
glVertex2f (0, YSCREEN);
glEnd ();
glFinish ();
ReadTexture ();
} // Draw
void ReadTexture (void)
{
Error ();
glReadPixels (0, 0, XSCREEN, YSCREEN, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
Error ();
} // ReadTexture
void Error (void)
{
GLenum errCode;
const GLubyte* errString;
if ((errCode = glGetError ()) != GL_NO_ERROR)
{
errString = gluErrorString (errCode);
printf ("GL Error : %s\n", errString);
}
} // Error
##################################################
I would really appreciate if someone could help me find the bug in this code.
Please help.
Thanks.