【发布时间】:2020-02-14 06:24:53
【问题描述】:
我是 GLSL 方面的新手,我一直在努力寻找一种方法来为立方体的所有顶点着色不同的颜色。每个面有 4 个顶点,一个立方体有 6 个面,所以 6 * 4 = 24。但我每个角只能绘制 1 种颜色。
顶点着色器:
#version 330
uniform mat4 u_m_matrix;
uniform mat4 u_vp_matrix;
layout (location=0) in vec3 a_position;
layout (location=1) in vec3 a_normal;
out vec3 normal;
void main()
{
normal = a_position;
gl_Position = u_vp_matrix * u_m_matrix * vec4(a_position, 1.0);
}
片段着色器:
#version 330
in vec3 normal;
out vec4 fragColor;
void main() {
fragColor = vec4(normal, 1.0);
}
结果:
【问题讨论】:
-
你必须更具体。你想达到什么目标? “如何用不同的颜色绘制立方体的所有顶点?” - 顶点位于立方体的角上。所有的角落都有不同的颜色,不是吗?
-
我需要用不同的颜色绘制所有顶点。每个面有 4 个顶点,因此 4 * 6 = 24 种颜色。
-
每个面有 4 个顶点(正确!),一个立方体有 6 个面(再次正确!),所以 6 * 4 = 24.(现在让我阻止你,一个立方体有 8 个顶点,每个面与另一个面共享 2 个顶点)
-
@jalsh 每个面与任何封闭模型中的另一个面共享每个顶点。
-
不要直言不讳,但你从哪里得到这个 24 数字?立方体有八个不同的顶点。您的示例图片已经用不同的颜色绘制了每一张。