Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 如何将顶点颜色信息传递到GLSL着色器程序中_Opengl_Unity3d_Glsl_Shader - Fatal编程技术网

Opengl 如何将顶点颜色信息传递到GLSL着色器程序中

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 }

我的问题是如何在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
}
然后,我们通过基于大小和偏移量大小的解析将数据传递到顶点缓冲区。 在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着色器参考,请参见。您正在尝试,对吗?这个问题并不完全清楚。