なんとかアルファを機能させましたが、1 つのテクスチャだけでアルファを変更したいと考えています。現在、両方でのみ動作します。深度テストとブレンド係数を設定します。
context3D.setDepthTest(false, Context3DCompareMode.LESS);
context3D.setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA);
ソースとデスティネーションが正確に何であるかはまだわかりません。明確化があればいいでしょう。 頂点データが含まれています
[x, y, z, u, v, 0|1]
頂点レジスタの設定
context3D.setVertexBufferAt(0, m_vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3);
context3D.setVertexBufferAt(1, m_vertexBuffer, 3, Context3DVertexBufferFormat.FLOAT_2);
context3D.setVertexBufferAt(2, m_vertexBuffer, 5, Context3DVertexBufferFormat.FLOAT_1);
フラグメント定数の設定
context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, Vector.<Number>([textureMul, 0, 0, 0]));
頂点シェーダー
m44 op, va0, vc0
mov v0, va1
mov v1, va2
フラグメントシェーダー
tex ft0, v0, fs0 <2d,clamp,linear>
sub ft0.w, ft0.w, fc0.x
add ft0.w, ft0.w, v1
mov oc, ft0
fc0.x は 0 から 1 の間の数値です。 v1 は 0 または 1 です。