我正在Android上开发一个OpenGL ES 3.0应用程序,主要是Java,我需要使用浮点渲染纹理。
GLES30.glGetString(GLES30.GL_EXTENSIONS)
返回一个包含 GL_EXT_color_buffer_half_float 和 GL_EXT_color_buffer_float 的字符串 => 我的设备显然支持浮点纹理。
但是,我现在有点迷失如何使用这些扩展。打电话
GLES30.glTexImage2D(GLES30.GL_TEXTURE_2D, 0, GLES30.GL_RGBA16F, 512, 512, 0, GLES30.GL_RGBA, GLES30.GL_UNSIGNED_BYTE, null);
导致 glError 1282。当我使用 GL_RGBA 而不是 GL_RGBA16F 时,一切正常。我想试试 GL_RGBA16F_EXT,但这不包含在 GLES30 中。所以,我试图传递值 0x881A ,我认为这是 GL_RGBA16F_EXT 的定义方式。但是,同样的错误:glError 1282。
有一个函数 eglGetProcAddress 有时需要使用 OpenGL ES 扩展,但由于我不需要函数的地址,我怀疑这对我也没有帮助。我真的不知道下一步该尝试什么。如何创建浮点 FBO?