在opengl中启用扩展

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在opengl中启用扩展相关的知识,希望对你有一定的参考价值。

我做了一个有效的程序。帧缓冲区中的渲染附加到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

规格告诉我:

“如果启用了混合(见下文),任何绘制缓冲区都有32位浮点格式组件,任​​何将顶点传输到GL的命令都会产生INVALID_OPERATION错误。”

在搜索时我遇到了这个子扩展:https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_float_blend.txt

但是如何激活呢?

对于gl.getExtension,opengl中的等效指令是什么

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

非常感谢你的lumières

答案

感谢@Selvin,我成功使用了GL_HALF_FLOAT中编码的纹理RGBA。所以,这次混合模式有效!

以上是关于在opengl中启用扩展的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL、GLSL 片段着色器无法读取 Sampler2D 纹理

片段着色器中未使用纹理数据 - OpenGL

OpenGL顶点属性未启用

带有顶点/片段着色器的光。使用不同的变量。 (openGL)

在 webview_flutter 中启用捏合和缩放,在哪里添加代码片段 [this.webView.getSettings().setBuiltInZoomControls(true);]

OpenGL片段着色器不照亮场景