我想读取后台缓冲区的像素。但是目前我只能得到黑屏(清除颜色)。
问题是,我不需要 glut 窗口来绘制。一旦我获得了像素信息,我就将其传递给另一个程序,该程序将为我绘制图像。
我的 init 函数如下:
然后在我的渲染函数中,我执行以下操作:
问题是,我不需要 glut 窗口来绘制。一旦我获得了像素信息,我就将其传递给另一个程序,该程序将为我绘制图像。
我的 init 函数如下:
// No main function, so no real argv argc
char fakeParam[] = "nothing";
char *fakeargv[] = { fakeParam, NULL };
int fakeargc = 1;
glutInit( &fakeargc, fakeargv );
GLenum err = glewInit();
if (GLEW_OK != err)
{
MessageBoxA(NULL, "Failed to initialize OpenGL", "ERROR", NULL);
}
else
{
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
// Not sure if this call is needed since i don't use a glut window to render too..
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
}
然后在我的渲染函数中,我执行以下操作:
void DisplayFunc(void)
{
/* Clear the buffer, clear the matrix */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
// TEAPOT
glTranslatef(0.0f, 0.0f, -5.0f); // Translate back 5 units
glRotatef(rotation_degree, 1.0f, 1.0f, 0.0f); // Rotate according to our rotation_degree value
glFrontFace(GL_CW);
glutSolidTeapot(1.0f); // Render a teapot
glFrontFace(GL_CCW);
glReadBuffer(GL_BACK);
glReadPixels(0, 0, (GLsizei)1024, (GLsizei)768, GL_RGB, GL_UNSIGNED_BYTE, pixels);
int r = glGetError();
}
我的工作大致如下。在最后一个函数结束时,我尝试读取所有像素。但输出只是一张黑色的图片。glGetError()没有报错。
有任何想法问题可能是什么吗...???