【发布时间】:2016-01-04 06:11:04
【问题描述】:
如果我有一个简单的 OpenGL 着色器同时应用于多个立方体,那么统一值会变慢。我注意到像 glColor3f 这样的东西并没有减慢它的速度(至少从我尝试过的情况来看),但目前正在使用 glColor3f 作为一种黑客,以便着色器可以读取 gl_Color 并且我可以使用它类似于制服用于确定立方体的哪一侧被渲染用于与面无关的平面照明。
我正在使用显示列表,所以我使用了 glColor3f,因为它已被添加到列表中,并且在创建列表时只是在每个面之前使用了不同的颜色。现在,我想在渲染之前设置更多值(这次不在显示列表中)。
我可以从 OpenGL 执行哪些可以在着色器中读取的调用?在渲染之前,我需要将 0-8 的 6 个整数发送到着色器中,但我以后可能会设法缩小它。
【问题讨论】:
-
如果您使用现代 OpenGL,这种事情会容易得多,而不是尝试将固定功能管道 (
glColor3f) 和过时的 API(显示列表)与更新的功能 (着色器)。通常,您将定义属性、统一、统一缓冲区、纹理、着色器存储缓冲区等的组合,并且着色器可以读取所有这些。听起来你想要属性。