1

アルファ付きの白い円であるテクスチャを持つパーティクル エミッタを作成しています。フラグメント シェーダーに渡された色を使用してスプライトに色を付けることができません。

私は次のことを試しました:

    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を使用して値を補間できますが、問題を理解していればさらに簡単です。

基本的には、テクスチャのアルファ チャネルだけが必要で、それを別の色に適用しますよね? 次に、これを行うことができます:

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