在Opengles 2.0中在平滑着色和平面着色之间切换

时间:2012-11-28 12:20:55

标签: android opengl-es-2.0 normals glsles

我正在使用opengles 2.0在android中使用3d应用程序绘制一些模型,但那些

盒状模型看起来过于平滑,具有平滑的阴影,我需要阴影平滑的球体模型。

我将3d模型输出到.OBJ文件中,并且从搅拌器中使用阴影平滑。

现在我的3D模型结构已经

每顶点正常。

使用顶点索引数组绘制模型。

由于我的模型正常是每顶点正常我的计划处理这个是创建一个面 -

正常并重建我的所有绘图方法,不使用顶点索引数组导致它无法做到。

我不想这样做,因为顶点索引数组占用的内存较少。

是否有办法使用顶点索引数组进行平滑处理,以便像使用插值变量或其他方式使用中间值一样使GLSL格式化?

感谢您的帮助,抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

我也在努力解决这个问题 - 您绝对可以更改管道以生成精确的面法线并将它们传递到管道,然后在照明计算中使用它。

或者你可以在模型本身的Blender(或任何其他3D程序)中完成这项工作 - 复制你想要变平的顶点,使每个面都有自己的顶点,当没有连接到其他面时它们的顶点法线将是面法线(具有平滑或平面阴影)。最初为6个顶点的立方体将成为4 * 6 = 24个顶点,具有相同的6个四边形面,但每个顶点的顶点法线将与四边形的面法线精确对齐。

最终结果是相同的,需要将更多顶点传递到管道中,但我喜欢模型中的解决方案,因为它允许您在模型中混合平滑和平面着色的位置。 / p>

我想在搅拌机中甚至可能会有一个脚本来自动执行此操作。关于Blender正在做什么以及为什么在可编程管道中没有平面着色,这是a loosely related article

相关问题