Android Galaxy Nexus上的白色OpenGL ES 1 pot纹理

Android Galaxy Nexus上的白色OpenGL ES 1 pot纹理,android,c++,opengl-es,opengl-es-1.1,Android,C++,Opengl Es,Opengl Es 1.1,看起来我的二次幂纹理显示为完全白色。该应用程序适用于各种设备,甚至包括Nexus7,但GalaxyNexusPhone似乎会产生白色纹理。这可能与PowerVR gpu有关 我可以与应用程序交互,所有东西似乎都到位了,但纹理无法渲染 我尝试了各种EGLConfigs,但似乎没有任何效果 以下是生成纹理的方法,请注意,没有mipmap: glGenTextures( 1, &TextureId ); glBindTexture( GL_TEXTURE_2D, TextureId ); gl

看起来我的二次幂纹理显示为完全白色。该应用程序适用于各种设备,甚至包括Nexus7,但GalaxyNexusPhone似乎会产生白色纹理。这可能与PowerVR gpu有关

我可以与应用程序交互,所有东西似乎都到位了,但纹理无法渲染

我尝试了各种
EGLConfig
s,但似乎没有任何效果

以下是生成纹理的方法,请注意,没有mipmap:

glGenTextures( 1, &TextureId );
glBindTexture( GL_TEXTURE_2D, TextureId );
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,Width,Height,0,GL_RGBA,GL_UNSIGNED_BYTE,Data);
此外,
GL\u TEXTURE\u 2D
已启用

  • 纹理都是2的幂(64x5121024x1024等)
  • 即使设备支持2048x2048,也没有任何纹理超过1024x1024
  • 没有
    glError()
    s和
    eglError()
    s
  • 颜色有效,我可以与我的应用程序交互
  • eglMakeCurrent
    eglCreateContext
  • 适用于我试用过的所有其他设备(emulator、Nexus 7(Tegra)、Sony Xperia 10(Adreno 200)、Galaxy S2(Mali GPU))
  • 我使用交错VBO进行绘图
  • glEnable(GL_纹理_2D)已设置
  • 资源将放置在“资源”文件夹中
  • 所有OpenGL操作都发生在同一上下文和线程上
更新:
glGenTextures()
返回大量数字。

滚动一个自定义纹理迭代器,我能够让它工作。我仍然想弄明白为什么glGenTextures不起作用。代码如下:

GLuint TextureId;
glGenTextures( 1, &TextureId );
TextureId
可以达到数十亿。这只发生在Nexus手机上,所有其他设备都给了我正确的纹理ID(1、2、3、4等)


有什么建议吗?

可能与mipmapping有关。您正在尝试mipmap非方形纹理吗?您是用硬件还是软件生成mipmap?也可能是资源扩展。图像存储在哪里?如果它们在您的资源目录中,您需要将其放在
drawable nodpi
中,以避免意外的缩放。drawable或drawable mdpi目录中的1024x1024图像将在Galaxy Nexus上以更大的尺寸加载。@Tenfour04如前所述,资产文件夹中没有存储mipmap和纹理。哎呀,错过了。“你不是
TextureId
只是纹理的一个“名称”吗?GLES规范说,不能保证所有纹理名称都使用连续整数。我还认为名称不能与任何GL常量匹配,以避免混淆。该错误可能是由其他地方引起的。@Tenfour04正确,但我的所有其他设备似乎都返回了正确的顺序(从1开始)。如果我写下自己的id并将其递增1,那么问题就解决了。很奇怪。我还检查了线程,所有OpenGL操作都发生在同一上下文/线程上。