对不起,我会重写希望清楚的问题。GLSL Fragment Position
在我的.cpp代码中,我创建了一个四方形列表,其中一些有一个标志,在像素着色器中,我检查该标志是否设置,如果没有设置标志,红色,例如,如果设置了标志,我想决定每一个像素的颜色,所以如果我需要为红色标记的四分之一的颜色着色,而另一半蓝色,我可以简单地做这样的事情:
if coordinate in quad < something color = red
else colour = blue;
通过这种方式,我可以得到四分之一色的蓝色和另一半红色的颜色,或者我可以决定在哪里放置红色或放置蓝色的位置。
想象我有四50x50像素
[FRAG]
if(quad.flag == 1)
{
if(Pixel_coordinate.x<25) gl_fragColor = vec4(1.0, 0.0, 0.0, 1.0);
else gl_fragColor = vec4(0.0, 1.0, 0.0, 1.0);
}
else
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
在这种情况下,我会期望与标志设置四会得到每个面两种颜色。 我希望我现在已经更具体。
感谢。
只是添加一些东西,我不能使用任何纹理。
好吧,我现在这样做:
每四有4个纹理协调(0,0),(0,1),(1,1),(1,0);
启用纹理坐标使用:
glTexCoordPointer(2, GL_SHORT, sizeof(Vertex), BUFFER_OFFSET(sizeof(float) * 7));
[VERT]
varying vec2 texCoord;
main()
{
texCoord = gl_MultiTexCoord0.xy;
}
[FRAG]
varying vec2 texCoord;
main()
{
float x1 = texCoord.s;
float x2 = texCoord.t;
gl_FragColor = vec4(x1, x2, 0.0, 1.0);
}
我总是得到黄色所以X1 = 1米x 2几乎总是= 1,一些四边形是黄色/绿色。
我期望纹理坐标在片段着色器中发生变化,所以我应该得到一个渐变,我错了吗?
要*“理解”*哪个位置(以及几何的哪个*“半”*)?屏幕空间位置?世界空间的位置?观看空间的位置?哪一个? –
当地的位置是什么,你是指四边形在世界空间中的位置还是什么?什么意思*“将像素着色一半”*?这个标志的使用是否对实际问题有任何意义(也就是说,你想根据*“了解位置”来动态计算这个标志*)?我非常难以理解你真正想要达到的目标。 –