C++ 当加载OBJ时,我得到这个

C++ 当加载OBJ时,我得到这个,c++,opengl,mingw,sfml,wavefront,C++,Opengl,Mingw,Sfml,Wavefront,这次我成功地加载了一个模型!耶 但是有一个小问题,我和另一个obj装载机有一个问题 下面是它的样子: 如果你不能马上看到,这里还有另一个角度: 现在这看起来像一个立方体,但正如你所看到的,立方体上的面边缘非常起伏 是否有其他人有这个问题,或者如果有人知道如何解决这个问题,请告诉我 另外,如果有任何代码需要显示,我很乐意发布 嘿,我对代码进行了修改(修改了一些东西),这就是我想到的 原件: glMatrixMode(GL_PROJECTION); glLoadIdentity();

这次我成功地加载了一个模型!耶

但是有一个小问题,我和另一个obj装载机有一个问题

下面是它的样子:

如果你不能马上看到,这里还有另一个角度:

现在这看起来像一个立方体,但正如你所看到的,立方体上的面边缘非常起伏

是否有其他人有这个问题,或者如果有人知道如何解决这个问题,请告诉我

另外,如果有任何代码需要显示,我很乐意发布

嘿,我对代码进行了修改(修改了一些东西),这就是我想到的

原件:

glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(50.f,(double)800 / (double)600,0.f,200.f);
    glTranslatef(0.f, 0.f, -10.0f);
结果:选择图像(查看图像)

当前:

glMatrixMode(GL_MODELVIEW);
    gluPerspective(50.f,(double)800 / (double)600,0.f,200.f);
    glTranslatef(0.f, 0.f, -50.0f);
    glLoadIdentity();

结果:模型没有起伏,但无法移动相机(模型就在我前面)

这看起来像是投影设置问题。立方体的某些部分在转换为剪辑空间时会超过近/远平面

据我所见,您使用的是正交投影矩阵-这是制作2D UI的标准。请查看您通话的nearVal和farVal。对于2D UI,它们通常分别设置为-1和1(或0和1),因此可能需要通过修改上述参数来进行立方体或增加视锥体深度

gluPerspective(50.f,(double)800 / (double)600,0.f,200.f);
                                              ^^^ 
                                               | 
That's your problem right there ---------------+
对于透视投影,近剪裁距离必须大于0。实际上,应该选择“近”以尽可能远,选择“远”剪裁平面以尽可能近


假设深度缓冲区为16位宽,然后将场景切片为32768个切片。切片分布遵循1/x定律。从技术上讲,你是在除以零。

嗯……事实上,我甚至没有在我的项目中使用glOrtho调用。有什么地方我应该设置它吗?(比如,如果我单独调用它,或者在某个对象中使用它,比如“object.glOrtho()”如果这是一个投影问题,那么对象就不会像在两个屏幕截图上一样被切割,只需看第二个屏幕截图的顶面。投影不会像那样切割你的脸。试着缩小这个立方体,然后我们就会得到一个答案,无论它是否是投影矩阵问题。@Gwiazdorr:你的意思是缩小它?我的距离是0-100,我只将相机向后移动了大约10个单位。立方体的大小约为3-5个单位。透视图属于投影矩阵,而不是模型视图。不要删除这样的内容,这不是游戏。你会导致答案变得毫无意义-请回滚,如果你有与原始问题相关的新问题,请将它们添加到q中uestion.images不起作用,我也没有它们……这是新的问题链接:这是原始的?还是更改的(当前的)