C++ Opengl曲面渲染问题
我刚开始加载一些obj文件并用opengl渲染它。当我渲染这些网格时,我得到了这个结果(参见图片)。 我认为这是某种深度问题,但我自己无法解决。 这是渲染的参数:C++ Opengl曲面渲染问题,c++,opengl,3d,rendering,C++,Opengl,3d,Rendering,我刚开始加载一些obj文件并用opengl渲染它。当我渲染这些网格时,我得到了这个结果(参见图片)。 我认为这是某种深度问题,但我自己无法解决。 这是渲染的参数: // Dark blue background glClearColor(0.0f, 0.0f, 0.4f, 0.0f); // Enable depth test glEnable( GL_DEPTH_TEST ); // Cull triangles which normal is not towards the ca
// Dark blue background
glClearColor(0.0f, 0.0f, 0.4f, 0.0f);
// Enable depth test
glEnable( GL_DEPTH_TEST );
// Cull triangles which normal is not towards the camera
glEnable(GL_CULL_FACE);
我使用此教程代码作为模板。
问题很简单,您正在进行正面或背面剔除 并且对象文件包含CCW(计数器时钟方向)或CW(时钟方向)cordinate,因此从左到右或从右到左写入。 您的openGL代码期望它以另一种方式出现,因此它隐藏了您正在回望的曲面 要检查这是否解决了您的问题,只需取出
glEnable(GL\u CULL\u FACE)代码>
因为这似乎正是产生问题的原因
此外,还可以使用glCullFace(ENUM)代码>其中枚举必须是GL\u-FRONT
或GL\u-BACK
。
如果在这两种情况下,您至少有一种情况下看不到网格(这两种情况下的意思是:GL_-FRONT
或GL_-BACK
您只看到了部分网格),则说明.obj的代码有问题。或者.obj使用不严格的曲面向量。(CCW和CW的混合)我实际上不确定你的意思,但是格伦纳布尔(glEnable)(Glu CULL_FACE);然后GL_CULL_FACE(GL_BACK);将剔除或删除对象的背面。这大大减少了渲染对象时的延迟,并且仅当您在对象内部或“后面”时才会产生差异
此外,您是否尝试过glClear(GL_颜色_缓冲区_位| GL_深度_缓冲区_位);渲染代码之前?是否清除任何深度和颜色缓冲区?是否可以显示绘制循环代码?