我创建的粒子发射器的纹理是带有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

最佳答案

对于您的代码,请考虑以下示例:

  • 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)
    

    关于ios - 将颜色应用于Fragment Shader中的OpenGL ES 2.0 Point Sprite纹理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15948939/

    10-12 14:30
    查看更多