如何在Android上启用OpenGL扩展GL_EXT_shader_framebuffer_fetch?
问题描述:
我开发一个Android应用程序与OpenGL ES 2.0的,我想用GL_EXT_shader_framebuffer_fetch扩展。如何在Android上启用OpenGL扩展GL_EXT_shader_framebuffer_fetch?
根据我的理解,我需要先使用我的片段着色器顶部的#extension
指令启用它,然后我可以使用内置变量gl_LastFragData
。
因此,这里是我的片段着色器:
#extension GL_EXT_shader_framebuffer_fetch : require
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <- Enable the extension
varying highp vec2 textureCoords;
uniform sampler2D currentTexture;
void main()
{
vec4 currentColor = texture2D(currentTexture, textureCoords);
gl_FragColor = currentColor;
}
然而,当我编译着色器,我得到以下编译错误:
Couldn't compile shader: Fragment shader compilation failed.
ERROR: 0:1: '' : GLSL error: extension 'GL_EXT_shader_framebuffer_fetch' is not supported
ERROR: 1 compilation errors. No code generated.
的错误是很明确的:这个扩展不支持。
我的技术规格:
- 硬件:三星Galaxy S4
- Android版本:5.0.1
- Android的API级别:21
-
的OpenGL版本(
glGetString(GL_VERSION)
):OpenGL ES 3.0 [email protected] AU @(CL @)
我有几个问题:
- 有什么我可以做安装这个扩展我的设备上?
- 如果没有,我可以安装/使用它的模拟器?
- 是不是软件事情还是真的有硬件问题?
答
Is there anything I can do to install this extension on my device?
不; GPU和驱动程序都支持它,或者它们不支持。
If not, can I install it/use it on an emulator?
如果仿真器支持扩展,然后是你可以用它...
Is it a software matter or really a hardware problem?
可能是因为存在底层硬件的限制,或在驱动程序的限制。从应用程序开发人员的角度来看,这两者是不可分割的,所以它是无关紧要的,这是真正的限制...