截图而不是OpenGL中的输出

时间:2013-10-02 19:17:54

标签: c++ opengl

我刚开始尝试使用OpenGL,我遇到了一个奇怪的问题。

如果我使用g++ test.c -lGL -lGLU -lglut编译并执行./a.out,则会打开一个单独的窗口(代码中指定的大小)。但它没有输入代码的输出,而是在屏幕内部(屏幕的一部分重叠)有屏幕截图。

这绝对与代码无关,因为它在我朋友的电脑上运行正常。但我需要在我的电脑上修复它。

我使用的是Linux Mint 15 64bit(HP DV6 6121tx)。

所以我无法继续前进。这是我的代码:

#include <GL/gl.h>
#include <GL/glut.h>
#define drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES); glVertex2f ((x1),(y1)); glVertex2f ((x2),(y2)); glEnd();


void init()
{
  glClearColor(1.0,1.0,1.0,0.0);
  glMatrixMode(GL_PROJECTION);
  gluOrtho2D (-600,600,-400,400);
  glClear(GL_COLOR_BUFFER_BIT);
}


int main(int argc, char** argv)
{

  glutInit(&argc,argv);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutInitWindowPosition(0,0);
  glutInitWindowSize(1200,800);
  glutCreateWindow("ABCD");

  init();

  glutMainLoop();

  return 0;
}

1 个答案:

答案 0 :(得分:2)

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
                    ^^^^^^^^^^^

您已经要求使用单缓冲窗口,因此您必须glFlush() / glFinish()强制排队输出到屏幕。

glFinish()的末尾添加init()