3

看来我的 2 次幂纹理完全显示为白色。此应用程序适用于各种设备,甚至 Nexus 7,但 Galaxy Nexus 手机似乎会产生白色纹理。这可能与 PowerVR gpu 有关。

我可以与应用程序交互,一切似乎都在原地,但纹理没有渲染。

我尝试了各种EGLConfigs,似乎没有任何效果。

这是我生成纹理的方式,注意没有 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_TEXTURE_2D已启用。

  • 纹理都是 2 的幂(64x512,1024x1024 等)。
  • 即使设备支持 2048x2048,纹理也没有超过 1024x1024
  • 没有glError()s 也没有eglError()s。
  • 颜色有效,我可以与我的应用程序交互
  • eglMakeCurrent或没有错误eglCreateContext
  • 适用于我尝试过的所有其他设备(模拟器、Nexus 7(Tegra)、Sony Xperia 10(Adreno 200)、Galaxy S2(Mali GPU))
  • 我使用交错的 VBO 进行绘图
  • glEnable(GL_TEXTURE_2D);已设置
  • 资产放在 assets 文件夹中
  • 所有 OpenGL 操作都发生在相同的上下文和线程上

更新:glGenTextures()返回大量数字。

滚动自定义纹理迭代器,我能够让它工作。我仍然想弄清楚为什么 glGenTextures 不起作用。这是代码:

GLuint TextureId;
glGenTextures( 1, &TextureId );

TextureId可以是数十亿。这只发生在 Nexus Phone 上,所有其他设备都给了我正确的纹理 ID(1、2、3、4 等)

有什么建议么?

4

0 回答 0