GlOrtho无法正常工作

时间:2015-06-28 11:27:20

标签: c++ opengl

我正在使用GLUT,由于某种原因,我的glOrtho无法正常工作。

这是我的代码:

#include"Dependencies\glew\glew.h"
#include"Dependencies\freeglut\freeglut.h"
#include<iostream>
void render(void)
{
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glClearColor(1, 1, 1, 1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 1280, 720, 0, 0, 1);
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    float x = 0.0;
    float y = 0;
    glBegin(GL_QUADS);
        glColor3f(1, 0, 0);
        glVertex2f(x, y);
        glVertex2f(x + .1, y);
        glVertex2f(x + .1, y + .1);
        glVertex2f(x, y + .1);
    glEnd();
    glutSwapBuffers();
}
void closeCallback()
{

    std::cout << "GLUT:\t Finished" << std::endl;
    glutLeaveMainLoop();
}

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

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(32, 32);
    glutInitWindowSize(1280, 720);
    glutCreateWindow("MahGame");
    glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);

    glewInit();

    glutDisplayFunc(render);
    glutCloseFunc(closeCallback);

    glutMainLoop();

    return 0;
}

即使我将x和y浮点数设置为0,我在中间渲染它,当我尝试像x + 50这样的东西时,它是超级巨大的,我必须使它成为x + 0.5f以便我的三角形是小。

1 个答案:

答案 0 :(得分:0)

您没有正确设置投影矩阵:

glLoadIdentity();
glOrtho(0, 1280, 720, 0, 0, 1);
glLoadIdentity();

第二个glLoadIdentity()完全覆盖之前设置的任何矩阵,这样你的glOrtho()根本没有任何影响(除了消耗一些CPU周期)。