C++ GLTRANSTEF拉伸球体,如何在不拉伸球体的情况下平移球体?

C++ GLTRANSTEF拉伸球体,如何在不拉伸球体的情况下平移球体?,c++,opengl,C++,Opengl,查看我的代码(在openGL,C++)蓝色球体更宽[拉伸],我如何修复它,我需要不拉伸的翻译:你能修复我的代码以避免拉伸吗? 我的代码: #包括 静态空心调整大小(整型宽度、整型高度) { 常量浮点ar=(浮点)宽度/(浮点)高度; glFrustum(-ar,ar,-1.0,1.0,2.0,100.0); } 静态无效显示(无效) { glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位); glColor3d(0,0,1); glPushMatrix(); glTranslatef(

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

#包括
静态空心调整大小(整型宽度、整型高度)
{
常量浮点ar=(浮点)宽度/(浮点)高度;
glFrustum(-ar,ar,-1.0,1.0,2.0,100.0);
}
静态无效显示(无效)
{
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glColor3d(0,0,1);
glPushMatrix();
glTranslatef(3.0,0.0,-6.0);
固体球(1,50,50);
glPopMatrix();
glColor3d(1,0,0);
glPushMatrix();
glTranslatef(0.0,0.0,-6.0);
固体球(1,50,50);
glPopMatrix();
glutSwapBuffers();
}
int main(int argc,char*argv[])
{
glutInit(&argc,argv);
glutInitWindowSize(12001200);
glutCreateWindow(“gggggggggggg”);
GLUTEFUNC(调整大小);
glClearColor(1,1,1,1);
glutDisplayFunc(显示器);
glutMainLoop();
}

失真来自glFrustum。这是一个投影的例子,它能满足你的要求

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

我不得不问:你有什么理由使用十多年来一直被弃用的OpenGL代码吗?没有。我不知道还有其他选择。你推荐用什么?我正在尝试对两个椭球体进行3D碰撞模拟,它们围绕其质心(围绕特定轴)旋转,并朝着彼此旋转。我认为这是针对OpenGL 4.0或更新版本的,可能是需要GLSL的核心轮廓。如果您希望有可用的应用程序,OpenGL 1.0仍然有效。。。OpenGL4.0及以上版本在gfx供应商中仍然没有得到很好的支持。您很容易会遇到无法预见的硬件不兼容gfx问题。如果您正在编写游戏,这是正常的,因为它预计有一个有效的GPU,但它的外观(例如在制造厂)还有很多无用的英特尔和东芝的东西,更新的GL的东西并没有正常运行。但至少使用VBO是一个提高速度的好主意。看看这个:所以你看一下我们正在谈论的东西非常感谢。
glOrtho(-5, 5, -5 / ar, 5 / ar, -20, 20);