【问题标题】:What are indices in GLSL?GLSL 中的索引是什么?
【发布时间】:2018-07-28 03:37:06
【问题描述】:

我正在阅读learnopengl.com 上的 OpenGL 教程,并且觉得我对迄今为止所学的知识有了相当扎实的掌握。我唯一遇到的问题是 GLSL 中的索引。到目前为止,我所知道的是它们用于在着色器之间以及缓冲区和顶点着色器之间传输数据。我想了解以下内容:

  1. 什么物理设备包含这些索引? (它是在 RAM 中还是在 GPU 上的内存中?)
  2. 为什么只有 16 个索引?
  3. 为什么我必须先启用它们,然后才能通过 glEnableVertexAttribute(n) 在程序的客户端使用它们?

感谢您抽出宝贵时间帮助我!

【问题讨论】:

    标签: c++ opengl glsl


    【解决方案1】:

    顶点数据存储在 GPU 内存中(或者更确切地说是缓冲的 - CPU 可能会处理它,但它都会被发送到 GPU)。这是一张图片:

    16 是 OpenGL 将保证的最小属性数。正如教程(在着色器部分的开头)和OpenGL documentation 中提到的,顶点属性的数量受图形硬件的限制。每个额外的顶点属性意味着你的 GPU 处理每个顶点的另一件事。默认禁用所有顶点属性并要求程序员启用他/她需要的属性可以让您的代码高效运行。

    【讨论】:

    • 谢谢!,只是为了确保我做对了,当启用一个属性时,顶点着色器将检查其中的内容,每次运行着色器时都会发生这种情况。当它被禁用时,它不会“寻找”任何东西,从而使程序更快。
    • 是的,差不多。这只是意味着没有为您不使用的顶点属性分配空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2011-02-26
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    相关资源
    最近更新 更多