glTranslatef拉伸我的球体,如何在不伸展球体的情况下翻译球体?

时间:2017-01-15 20:47:15

标签: c++ opengl

查看我的代码(在openGL,C ++中)蓝色球体更宽[拉伸],如何修复它,我需要翻译而不拉伸:你能不能修改我的代码以避免拉伸? 我的代码:

#include <GL/glut.h>

static void resize(int width, int height)
{
    const float ar = (float) width / (float) height;
    glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);
}

static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glColor3d(0,0,1);
    glPushMatrix();
        glTranslatef(3.0, 0.0, -6.0);
        glutSolidSphere(1,50,50);
    glPopMatrix();

    glColor3d(1,0,0);
    glPushMatrix();
        glTranslatef(0.0, 0.0, -6.0);
        glutSolidSphere(1,50,50);
    glPopMatrix();
    glutSwapBuffers();
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(1200,1200);
    glutCreateWindow("gggggggggggg");
    glutReshapeFunc(resize);
    glClearColor(1,1,1,1);
    glutDisplayFunc(display);
    glutMainLoop();
}

1 个答案:

答案 0 :(得分:1)

失真来自glFrustum。这是投影的一个例子,可以满足您的要求。

glOrtho(-5, 5, -5 / ar, 5 / ar, -20, 20);