【问题标题】:Store material as vertex attribute将材质存储为顶点属性
【发布时间】:2015-09-22 05:14:15
【问题描述】:

我正在使用多种材质渲染多个对象。通常材质在着色器中被表示为统一的,为了渲染整个场景,我们为每个材质调用绘制。

我可以将材质(Kd、Ka 等)表示为顶点属性并将其发送到带有平面插值的片段着色器吗?这样我们就可以只用一个命令来绘制。这种方法有什么缺点?

【问题讨论】:

  • 是的,你可以这样做。缺点:需要更多的 GPU 内存。
  • 考虑glVertexAttribDivisor 以减少内存使用量。

标签: opengl


【解决方案1】:

你绝对可以这样做;只需将材质定义为顶点属性,就像定义颜色、法线或位置一样。我不会太担心每个顶点向现代显卡发送 2 个额外的浮点数(漫反射、环境光)。可能会有轻微的性能差异,但不会很大。如果这是您需要的,那么使用顶点属性是最简洁的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多