gpt4 book ai didi

opengl - 具有固定层数的渐变

转载 作者:行者123 更新时间:2023-12-04 00:50:58 25 4
gpt4 key购买 nike

我画了一组四边形。对于每个四边形,我在它的顶点中有一个定义的颜色。

例如。现在我的四边形看起来像:

enter image description here

我以相当原始的方式实现了这样的结果,只是将其作为四边形每个顶点的属性颜色传入顶点着色器。

我的着色器非常简单:

顶点着色器

#version 150 core

in vec3 in_Position;
in vec3 in_Color;
out vec3 pass_Color;
uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
uniform mat4 modelMatrix;

void main(void) {
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(in_Position, 1.0);

pass_Color = in_Color;
}

片段着色器
#version 150 core
in vec3 pass_Color;
out vec4 out_Color;

void main(void) {
out_Color = vec4(pass_Color, 1.0);
}

现在我的目标是让颜色从顶点到顶点的颜色非连续分布。它也可以称为“水平分布”。

我的四边形集应该是这样的:

enter image description here

我怎样才能达到这样的结果?

编辑:

vesanNico Schertler盘子是这样的。 ( Not Acceptable 变体)

enter image description here

最佳答案

只是扩展 Nico Schertler 的评论:您可以将片段着色器修改为:

void main(void) {
out_Color = vec4(pass_Color, 1.0);
out_Color = floor(color * steps)/steps;
}

哪里 steps在你想要的颜色步骤的数量。 floor函数确实适用于矢量,但是,将为每种颜色单独计算步骤,因此结果可能不完全是您想要的(步骤可能不像您的示例中那样好)。

或者,您可以使用某种形式的“卡通阴影”(参见例如 here )。这意味着您只需将一个数字(想想灰度颜色)传递给您的着色器,然后使用您的着色器从颜色表中选择一种颜色。该表可以在着色器中进行硬编码,也可以从一维纹理中选择。

关于opengl - 具有固定层数的渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25107870/

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