Opengl 如何将顶点颜色信息传递到GLSL着色器程序中
我的问题是如何在unity中将逐顶点颜色数据传递到着色器程序中。 与OpenGL C++代码不同,我们定义属性并将其与着色器程序链接。 例如:Opengl 如何将顶点颜色信息传递到GLSL着色器程序中,opengl,unity3d,glsl,shader,Opengl,Unity3d,Glsl,Shader,我的问题是如何在unity中将逐顶点颜色数据传递到着色器程序中。 与OpenGL C++代码不同,我们定义属性并将其与着色器程序链接。 例如: float vertices [] { //vertex pos //vertex color .0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 2.0, 1.0 0.0, 1.0, 0.0 }
float vertices []
{
//vertex pos //vertex color
.0.0, 1.0, 0.0, 1.0, 0.0, 0.0,
1.0, 2.0, 1.0 0.0, 1.0, 0.0
}
然后,我们通过基于大小和偏移量大小的解析将数据传递到顶点缓冲区。
在unity中,“gl_顶点”获取所有顶点位置数据,但我也想传递颜色数据,以便片段着色器可以使用它
我想要这样的东西
//vertex shader
in vec4 color
out vec4 Color
void main()
{
gl_Position = gl_vertex //working fine
Color = color //expecting
}
//fragment shader
out vec4 fragcolor
in vec4 Color
void main()
{
outColor = Color
}
可以为
网格设置顶点颜色,如[1]中所述
要在着色器中使用它们,请向顶点着色器输入结构添加一个成员,并使用[2]中所述的:COLOR
对其进行装饰
[1] 统一脚本API;网眼布;颜色
[2] 统一手册;向顶点程序提供顶点数据 你是说从3d模型到着色器的顶点颜色?我建议阅读unity手册。此处不应标记OpenGL,因为GL着色器与unity在.shader文件中使用的着色器完全不同。有关最新的Unity着色器参考,请参见。您正在尝试,对吗?这个问题并不完全清楚。