我正在开发Android上的OpenGL ES 3.0应用程序,主要是在Java中,我需要使用浮点渲染纹理。如何在Android上使用OpenGL ES扩展
GLES30.glGetString(GLES30.GL_EXTENSIONS)
返回包含GL_EXT_color_buffer_half_float一个字符串,GL_EXT_color_buffer_float等等=>我的设备支持浮点纹理,很明显。
但是,我现在有点迷路了如何使用这些扩展。当我使用GL_RGBA代替GL_RGBA16F 调用
GLES30.glTexImage2D(GLES30.GL_TEXTURE_2D, 0, GLES30.GL_RGBA16F, 512, 512, 0, GLES30.GL_RGBA, GLES30.GL_UNSIGNED_BYTE, null);
导致一个glError 1282一切正常。 我想尝试GL_RGBA16F_EXT,但这不包含在GLES30中。所以,我想通过价值0x881A这就是GL_RGBA16F_EXT是如何定义的。但是,同样的错误:glError 1282.
函数eglGetProcAddress有时需要使用OpenGL ES扩展,但由于我不需要函数的地址,我怀疑这也不会帮助我。我真的不知道接下来要做什么。我怎样才能创建浮点型FBO?
哦,你是对的。谢谢!我认为,类型参数与数据参数相关联,因此,我指定的类型无关紧要,因为data = null。显然,我误解了那里的一些东西 - 哪个效果有类型参数?内部格式不指定一切,GPU需要知道? – j00hi 2014-09-04 14:55:09
增加了一些内容来尝试和解释。即使如此,从逻辑上解释它也是很难的,因为这些API的定义方式是一团糟。 – 2014-09-05 06:24:05