【发布时间】:2017-09-19 09:34:46
【问题描述】:
在 Vulkan 中,我编写了一个简单的程序来绘制固定颜色的线条,使用简单的顶点着色器和片段着色器。但是输入到片段着色器的颜色与在顶点中设置的颜色不同。我检查了 RenderDoc,传递给顶点着色器的颜色对于一条线的两个顶点都是正确的 (1,1,1,1),并且还检查了它的输出,它也一样。但在片段着色器中,我得到的颜色是 (1,1,0,1)。不明白为什么会这样。不管顶点着色器发出什么颜色,片段着色器的输入总是黄色的。
顶点着色器:
layout(location = 0) in vec4 position;
layout(location = 1) in vec4 color;
layout(location = 2) in vec2 texcoord;
out vec4 io_color;
out vec2 io_uv;
out vec4 io_position2;
layout(std140, binding = 0) uniform UniformBlock_uTransform
{
mat4 uTransform;
};
layout(std140, binding = 1) uniform UniformBlock_uTransform2
{
mat4 uTransform2;
};
void main ()
{
io_uv = texcoord;
io_color = vec4(1,1,1,1); //Just to debug it
gl_Position = uTransform * position;
io_position2 = uTransform2 * position;
}
//分片:
in vec4 io_color;
layout(location = 0) out vec4 result;
void main ()
{
result = io_color;
}
【问题讨论】:
-
请出示相关代码。
-
添加了着色器代码
-
我认为接口必须完全匹配。也可以尝试将
io_uv和io_position2添加为in变量。
标签: vulkan