我有2台设备Nexus 7和Kyocera Hydro Vibe,它们都支持GL_OES_texture_half_float
和EXT_Color_buffer_half_float
,但通过
// generate the textures
int GL_OES_texture_half_float = 0x8D61;
Log.d("Available extensions", GLES20.glGetString(GLES20.GL_EXTENSIONS));
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGB, texW, texH, 0, GLES20.GL_RGB, GL_OES_texture_half_float, null);
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, fb[0]);
GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, renderTex[0], 0);
导致nexus 7在帧缓冲附件中成功,而kyocera失败,即使必要的扩展名列为支持。
我的问题是,相当于半浮点数,允许每个RGBA组件的16位数据比half_float更广泛支持?