我想要实现的是拥有一个粒子系统,其中每个粒子都有给定纹理的一部分。下面是使用着色器材质的粒子缓冲几何的示例。到目前为止,我可以让它看起来几乎应有的样子,但是,我不知道如何正确地对片段着色器进行编程,以便在每个粒子上获得正确的纹理偏移。纹理为 500x500px,即相同数量的粒子。
片段着色器代码:
uniform sampler2D map;
void main() {
vec2 T = gl_FragCoord.xy;
gl_FragColor = texture2D( map, gl_PointCoord / T + 0.5);
}
一个额外的问题是:为什么放大时粒子会变小?