gpt4 book ai didi

opengl - ATI 显卡上 GLSL 着色器的顶点统一组件的实际数量是多少?

转载 作者:行者123 更新时间:2023-12-04 02:17:42 24 4
gpt4 key购买 nike

我正在为配备 AMD Radeon HD 6970M 2048 MB 显卡的 iMac 编写 GLSL 顶点着色器:

GL_MAX_VERTEX_ATTRIBS: 16
GL_MAX_VERTEX_UNIFORM_COMPONENTS: 4096
GL_VERSION: 2.1 ATI-7.12.9
GL_SHADING_LANGUAGE_VERSION: 1.20

在我的着色器中,我想要大量均匀的 mat4s:
uniform mat4 T[65]

但是如果我尝试使用其中的 65 个,我的着色器( secret 地)切换到 Apple 软件渲染器模式。如果我改为使用 64:
uniform mat4 T[64]

一切安好。

好像是超过了最大制服数的问题。但是正如我上面写的,GL_MAX_VERTEX_UNIFORM_COMPONENTS 得到 4096,所以 4096/(4*4) = 256 而不是 64 ...

OpenGL.org wiki

ATI/AMD note: The ATI max component values are wrong. They are the actual number of components divided by 4.



但是阅读本文时,我会认为如果我查询 GL_MAX_VERTEX_UNIFORM_COMPONENTS 并得到 4096,我实际上有 16,384。情况似乎是 GL_MAX_VERTEX_UNIFORM_COMPONENTS 返回组件的实际数量乘以 4。这将得到 1024/(4*4) = 64。

任何人都可以证实这一点吗?

编辑:
我的着色器很简单:
#version 120

// 65 goes into software render mode
#define MAX_T 64
attribute vec4 indices;
uniform mat4 T[MAX_T];

void main()
{
gl_Position = T[int(indices[0])]*gl_Vertex;
}

最佳答案

你是对的等距,你需要将 4096 除以 4 而不是乘法。维基条目的措辞很糟糕。

关于opengl - ATI 显卡上 GLSL 着色器的顶点统一组件的实际数量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8586543/

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