在OpenGL ES中启用扩展



我完成了一个有效的程序。在Float32中的纹理上附加了框架缓冲器中的渲染中。因此,我激活了一个扩展名

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

激活混合物:

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

这使得添加组件(代表粒子速度)

成为可能

我正在做同样的事情,但是使用OpenGL ES 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,如果不散发混合)

1282用于Invalid_operation

规格告诉我:

"如果启用了混合(请参阅下文),则任何命令都会生成Invalid_operation错误,任何命令将其传输到GL(请参见下文),并且任何绘制缓冲区都具有32位的浮点数格式组件。"

。"

搜索时,我遇到了这个子扩展:https://www.khronos.org/registry/opengl/extensions/exts/ext_float_blend.txt

但是如何激活它?

GL.GetExtension openGL ES中的等效指令

是什么

哦,最后一点,该应用程序在智能手机上运行,而WebGL中的程序在桌面上运行

非常感谢您的Lumières

感谢@selvin,我成功地使用了gl_half_float中编码的纹理RGBA。因此,混合模式这次有效!