m0_46615473
m0_46615473
2020-11-23 10:47
采纳率: 100%
浏览 54

为什么我的OPENGL代码运行出来只是一个白窗?

小白学习OPENGL,书上的代码写下来在我的电脑上跑出来就是一个白窗,可是不加glBegin和glEnd的时候就能画出来图像,百思不得其解,求助各位大佬。

代码如下,是一个很简单的画一条直线的代码

#include <GL/glut.h>
void init(void)
{
    glClearColor(1.0,1.0,1.0,0.0);//将窗口背景设置为白色
    glMatrixMode(GL_PROJECTION);//设置投影参数
    gluOrtho2D(0.0, 200.0, 0.0, 150.0);//显示窗口以(0,0)为左下角,(200,150)为右上角

}
void lineSegment(void)
{
    glClear(GL_COLOR_BUFFER_BIT);//清空显示窗口
    glColor3f(1.0, 0.0, 0.0); //red line
    glVertex2i(180, 15);
    glVertex2i(10, 145);
    glEnd();
    glFlush();

}
void main(int argc, char** argv)
{
    glutInit(&argc, argv);//初始化glut
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//选择显示模式。
    glutInitWindowPosition(50, 100);
    glutInitWindowSize(400, 300);
    glutCreateWindow("An Example OpenGL Program");
    init();//执行初始化过程
    glutDisplayFunc(lineSegment);//发送图形到显示窗口。
    glutMainLoop();
}
PS:可以帮忙的大佬我愿意给赏金,但我不知道怎么设置,我可以私下给发红包,大家都很忙,谢谢各位大佬!!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • qq_25376897
    qq_25376897 2020-11-23 11:36
    已采纳
    #include <GL/glut.h>
    #include <GL/gl.h>
    
    void init(void)
    {
        glClearColor(1.0,1.0,1.0,0.0);//将窗口背景设置为白色
        glMatrixMode(GL_PROJECTION);//设置投影参数
        gluOrtho2D(0.0, 200.0, 0.0, 150.0);//显示窗口以(0,0)为左下角,(200,150)为右上角
    }
    
    void linesegment(void)
    {
        glClear(GL_COLOR_BUFFER_BIT);//清空显示窗口
        glColor3f(1.0, 0.0, 0.0); //red line
        glBegin(GL_LINES);//显示一组线段,其端点坐标在glVertex函数中指定
        glVertex2i(180, 15);
        glVertex2i(10, 145);
        glEnd();
        glFlush();
    }
    
    int main(int argc,char** argv)
    {
        glutInit(&argc, argv);//初始化glut
        glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//选择显示模式。
        glutInitWindowPosition(50, 100);
        glutInitWindowSize(400, 300);
        glutCreateWindow("An Example OpenGL Program");
        init();//执行初始化过程
        glutDisplayFunc(lineSegment);//发送图形到显示窗口。
        glutMainLoop();
        return 0;
    }
    点赞 评论

相关推荐