GlOrtho工作不正常

GlOrtho not working properly

本文关键字:不正常 工作 GlOrtho      更新时间:2023-10-16

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

这是我的代码:

#include"Dependenciesglewglew.h"
#include"Dependenciesfreeglutfreeglut.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,这样我的三角形就很小。

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

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

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