1

我正在创建一个粒子发射器,其纹理是带有 alpha 的白色圆圈。无法使用传递给片段着色器的颜色为精灵着色。

我尝试了以下方法:

    gl_FragColor = texture2D(Sampler, gl_PointCoord) * colorVarying;

这似乎是在做某种加色。

我正在尝试将此移植:http: //maniacdev.com/2009/07/source-code-particle-based-explosions-in-iphone-opengl-es/ 从 ES 1.1 到 ES 2.0

4

1 回答 1

2

使用您的代码,请考虑以下示例:

  • texture2D = (1,0,0,1) = 红色 - 完全不透明
  • colorVarying = (0,1,0,0.5) = 绿色 - 半透明

那么 gl_FragColor 将是 (0,0,0,0.5) 黑色 - 半透明。

通常,您可以使用mix来插入值,但如果我理解您的问题,那就更容易了。

基本上,您只需要纹理中的 Alpha 通道并将其应用于另一种颜色,对吗?那么你可以这样做:

gl_FragColor = vec4(colorVarying.rgb, texture2D(Sampler, gl_PointCoord).a)
于 2013-04-11T14:34:47.447 回答