gpt4 book ai didi

android - GLSL ES 3.0 - 在顶点和 fragment 着色器中统一,以及最大顶点/fragment 统一向量

转载 作者:行者123 更新时间:2023-11-29 17:54:23 24 4
gpt4 key购买 nike

在 OpenGL ES 3.0 中,我们在顶点着色器和 fragment 着色器中都提供了最少数量的统一向量:

const mediump int gl_MaxVertexUniformVectors = 256;
const mediump int gl_MaxFragmentUniformVectors = 224;

如果我们有一个在顶点着色器和 fragment 着色器中定义相同的制服,它是否只在编译程序中存在一次,如果是这样,它的存储空间不受这些限制中的哪一个限制?

最佳答案

ES 3.0 规范。不必要地使统一存储的讨论复杂化(因此,我引用了 2.0 规范)。简而言之,此限制是指单个阶段 保留的统一空间量。一个 GLSL 程序总共可以存储超过 256 个统一位置,但不需要单个阶段能够一次使用超过 256 个。

OpenGL ES 2.0 Specification - 2.10 顶点着色器(统一变量)- 第 35 页

The amount of storage available for uniform variables accessed by a vertex shader is specified by the implementation-dependent constant MAX_VERTEX_UNIFORM_VECTORS. This value represents the number of four-element floating-point, integer, or boolean vectors that can be held in uniform variable storage for a vertex shader. A link error will be generated if an attempt is made to utilize more than the space available for vertex shader uniform variables.

虽然它是高度特定于实现的,但您可以将制服集视为整体程序存储,然后在每个阶段中,这些制服必须先从 GPU 的寄存器文件分配到一组有限的寄存器,然后才能使用。这是在编译/链接时静态建立 Activity 与非 Activity 制服的一件好事,它可以显着减少具有非 Activity 代码路径的链接程序每个阶段的存储要求。

顺便说一下,如果这是一个适用于所有阶段的限制,那么按照正常的 GL 命名法,该限制很可能被命名为:..._MAX_COMBINED_... 并且不会包含名称特定阶段的。

关于android - GLSL ES 3.0 - 在顶点和 fragment 着色器中统一,以及最大顶点/fragment 统一向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20533601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com