繁体   English   中英

OpenGL空白屏?

[英]OpenGL blank screen?

我正在从书中学习OpenGL,我完全按照书中的内容进行了操作,但是当我运行它时(Eclipse C ++ IDE),我只得到了空白屏幕。 本书是“程序员的OpenGL指南”。 我认为错误在Reshape()中,但代码来自book。

#include <iostream>
#include <GL/glew.h>
#include <GL/glut.h>

typedef const char* String;

String TITLE = "OpenGL";
int HEIGHT = 480;
int WIDTH = HEIGHT / 9 * 12;

void Update(int time){
    glutPostRedisplay();
    glutTimerFunc( 10, Update, 1);
}

void Init(){
    glClearColor(1.0, 1.0, 1.0, 0.0);
    glShadeModel(GL_FLAT);
}

void Render(){
    glClear(GL_COLOR_BUFFER_BIT);

    glColor3f(1.0, 1.0, 0.0);
    glLoadIdentity();
    gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
    glScalef(1.0, 2.0, 1.0); // Modeling transformation
    glutWireCube(1.0);

    glutSwapBuffers();
}

void Reshape(int w, int h){
    glViewport(0, 0, (GLsizei) w, (GLsizei) h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
}

int main(int argc, char** argv){
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowSize(WIDTH, HEIGHT);
    glutCreateWindow(TITLE);

    glewExperimental = true;
    GLenum err = glewInit();
    if(err!=GLEW_OK){
        exit(1);
    }

    Init();
    Update(1);
    glutDisplayFunc(Render);
    glutReshapeFunc(Reshape);

    glutMainLoop();
    return 0;
}

是重塑功能绝对是错误的

用那个

void Reshape(GLsizei w,GLsizei h)
{
    glViewport(0,0,w,h);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    if (h == 0)
        h = 1;

    GLfloat aspectRatio;
    aspectRatio = static_cast<GLfloat>(w) / static_cast<GLfloat>(h);

    gluPerspective(45.0,aspectRatio,1.0,4000.0);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

代替

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM