Opengl表面渲染问题

Mat*_*lzl 2 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 camera
glEnable(GL_CULL_FACE);
Run Code Online (Sandbox Code Playgroud)

我使用这个教程代码作为模板.https://code.google.com/p/opengl-tutorial-org/source/browse/#hg%2Ftutorial08_basic_shading 在此输入图像描述 在此输入图像描述

dhe*_*ein 5

问题很简单,你正在做FRONT或BACK剔除.

目标文件包含CCW(Counter-Clock-Wise)或CW(Clock-Wise)坐标,因此从左到右或从右到左书写.你的openGL代码期望它反过来,所以它隐藏了你向后看的表面.

要检查这可以解决您的问题,只需取出glEnable(GL_CULL_FACE); 因为这似乎正在产生问题.

此外,您可以使用glCullFace(ENUM);ENUM必须GL_FRONTGL_BACK.如果你不是至少有两种情况都看不到你的网格(两种情况都意味着:GL_FRONT或者GL_BACK你只看到部分网格),这就是你的代码解释.obj的问题.或.obj使用不严格的表面向量.(CCW和CW的混合)