看来我的 2 次幂纹理完全显示为白色。此应用程序适用于各种设备,甚至 Nexus 7,但 Galaxy Nexus 手机似乎会产生白色纹理。这可能与 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_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 等)
有什么建议么?