我目前正在尝试将点传递给自定义编写的精灵批处理器,现在我已经拥有它,所以点得到位置并使用尺寸来创建四边形的三角形条带。我的问题是,如果几何着色器获得单个点,那么如何将纹理坐标传递给片段着色器?
我也试图考虑纹理锯齿,因此纹理坐标可能不总是0到1
答案 0 :(得分:2)
那么,你发出4个独特的顶点吗?只需在几何着色器中为您发出的每个角分配[ 0.0 , 1.0 ]范围内的不同坐标,其中(0,0)
是左下方的图片和(1,1)
是右上角。
#version 330
layout (points) in;
layout (triangle_strip, max_vertices = 4) out;
out vec2 tex_coord;
void main (void) {
const vec2 coordinates [] = vec2 [] (vec2 (0.0f, 0.0f),
vec2 (1.0f, 0.0f),
vec2 (1.0f, 1.0f),
vec2 (0.0f, 1.0f));
for (int i = 0; i < 4; i++) {
gl_Position = gl_in [0].gl_Position + vec4 (coordinates [i], 0.0f, 0.0f);
tex_coord = coordinates [i];
EmitVertex ();
}
}