【问题标题】:How to implement flat shading in LWJGL如何在 LWJGL 中实现平面着色
【发布时间】:2021-03-19 01:07:28
【问题描述】:

我正在 LWJGL 中开展一个小项目。目前我正在从 obj/mtl 文件中存储顶点、法线和顶点颜色。

我正在尝试防止顶点着色。也就是说,我希望每个多边形都有它定义的颜色。我在网上做了一些阅读,我看到在着色器上使用 flat 修饰符和 gldisable(GL_BLEND)。到目前为止,唯一给我想要的结果是创建 6 个单独的平面并在 Blender 中对它们进行相应的着色。

sperate planes 似乎完全是 hack,我不知道它会如何扩展。

左边的立方体只是一个从搅拌机中导出的立方体,有 6 种不同的材料。右边的那个,我想要实现的,但是它的 6 个平面被建模成一个立方体,然后被导出。

实现我的独立彩色面孔目标的正确方法是什么?

【问题讨论】:

  • 你在 LWJGL 中使用的是什么版本的 OpenGL?
  • 另外,你会惊讶于你的“total hack”是标准做法,特别是当你在单个模型中混合平面和平滑阴影时。
  • @kibibu 版本 3.2.0 - 这是如何扩展的?这是在建模软件中配置的东西吗?还是我需要将多边形解析为软件中“自己的”对象?
  • 就我个人而言,我会坚持使用“hack”——面顶点在拐角处的唯一共同点是位置;法线和颜色属性会有所不同。
  • 你可以在建模过程中做到这一点 - Blender 有一个“边缘分割”修改器,我认为你可以使用它。

标签: opengl glsl lwjgl


【解决方案1】:

flat 添加到我的顶点着色器的输出中并将flat 添加到我的片段着色器给了我想要的结果

scene_vertex.vs

flat out vec3 mvVertexNormal;
flat out vec3 mvVertexPos;

scene_fragment.fs

flat in vec3 mvVertexNormal;
flat in vec3 mvVertexPos;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多