2017-12-20 17 views
-2

私は働いていたプログラムをやっていました。 float32のテクスチャに添付されたフレームバッファのレンダリングがありました。 (粒子速度を表している)コンポーネントを追加することが可能になったOpenGLで拡張を有効にする

gl.enable (gl.BLEND); 
gl.blendFunc (gl.ONE, gl.ONE); 

私は同じことをやっている:この事実のために、私はブレンドが活性化された拡張

var ext = gl.getExtension ("OES_texture_float"); //weglbl 
var ext = gl.getExtension ("EXT_color_buffer_float"); webgl2 

活性化しかしOpenGLを使用して3.0:

RTTはうまく機能しますが、ブレンドのレベルでエラーが発生しています:

GLES32.glEnable(GLES32.GL_BLEND); 
GLES32.glBlendFunc(GLES32.GL_ONE, GLES32.GL_ONE); 
GLES32.glDrawArrays (GLES32.GL_POINTS, 0, COUNT); 
int error = GLES32.glGetError(); // 1282 invalid 

(エラー== 0ブレンディングはdesactivedされている場合)

1282はINVALID_OPERATION

の仕様は、私に教えている:

「INVALID_OPERATIONエラーがに頂点を転送任意のコマンドによって生成されますブレンドが有効な場合はGL(下記参照)、描画バッファは32ビット浮動小数点形式のコンポーネントを持ちます。

探している間、私はこのサブ拡張出くわし: https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_float_blend.txt

が、どのようにそれを有効にするには? WebGLの中のプログラムが

はどうもありがとうございましデスクトップ上で実行中gl.getExtension

のためのOpenGL ESの同等の命令はああ、最後のポイントは、アプリケーションは、スマートフォン上で動作している何

あなたのlumières用

+2

*どのように起動するのですか?* can not ...指定されたデバイスに実装されているかどうかのみ確認できます – Selvin

+1

もっと一般的に、fp32レンダリングターゲットは、エネルギー効率)。フロートが本当に必要な場合はfp16を使用し、できる場合はRGB10_A2 RG11_B10を使用してください。 – solidpixel

+0

ok .... "GL_OES_texture_float"は私のデバイスにありません.... –

答えて

0

@セルビンのおかげで、私はGL_HALF_FLOATでエンコードされたテクスチャRGBAを使って成功しました。したがって、今回はブレンドモードが動作します!

関連する問題