Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Opengl曲面渲染问题_C++_Opengl_3d_Rendering - Fatal编程技术网

C++ 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

我刚开始加载一些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 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_深度_缓冲区_位);渲染代码之前?

是否清除任何深度和颜色缓冲区?是否可以显示绘制循环代码?