繁体   English   中英

将颜色应用于Fragment Shader中的OpenGL ES 2.0 Point Sprite纹理?

[英]Applying color to a OpenGL ES 2.0 Point Sprite texture in Fragment shader?

我创建的粒子发射器的纹理是带有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)黑色-半透明。

通常,您可以使用混合来插值,但是如果我理解您的问题,那么它甚至更容易。

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

gl_FragColor = vec4(colorVarying.rgb, texture2D(Sampler, gl_PointCoord).a)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM