2013-04-05 50 views
2

我们端口,其使用FBO延伸(GL_OES_framebuffer_object)到Android,并得到了问题基于Tegra的装置的一些的OpenGL ES 1.x的代码(Tegra 2的,Tegra 3的)。问题是,尽管设备在受支持的扩展列表中报告了GL_OES_framebuffer_object扩展,但功能部分似乎被破坏,特别是,glGetIntegerv()函数不接受任何与扩展相关的常量(例如GL_FRAMEBUFFER_BINDING_OES)报告GL_INVALID_ENUM错误。与此同时,其他与扩展相关的功能也可以正常工作。基于Tegra的设备上的OES_framebuffer_object扩展是否被破坏?

  • 这是一个已知的问题吗?
  • 是否有众所周知的解决方法?
  • 有人也会遇到这个问题吗?

我们测试的设备是Nexus7和Acer A500。

+0

我可以证实,一个游戏,用MonoGame建造,运行在Nexus 4和Galaxy Tab的2罚款,但创建帧缓冲和渲染目标时,也没有在Nexus 7和宏碁A500。我还没有设法找到解决方法。所以我认为这是Tegra芯片组的一个问题:(我注意到Adreno 320和PowerVR支持GL_OES_depth24,而Tegra没有。因此,我想在Tegra设备上将深度设置为16,看看它是否有效。 – Dominique 2013-04-30 11:52:24

+0

@Dominique:Tegra只支持16位深度缓冲区 – kusma 2013-05-22 11:46:51

+0

@kusma将深度设置为16似乎可以解决Tegra设备上的问题。 – Dominique 2013-05-23 17:02:36

回答

3

看来,在Tegra设备上,您需要将位深度设置为16,才能正常工作。一旦我们在MonoGame中完成,游戏在Nexus 7和Acer500上正常运行。

D.