我在创建纹理时创建了自己的 mipmap,一旦我通过 GL_LINEAR_MIPMAP_NEAREST(或任何 MIPMAP)启用 mipmap,纹理就会变得非常黑暗、模糊。如果我切换到 GL_LINEAR,它们就很好。
这是我创建纹理的方式:
glGenTextures(1, &m_TextureId);
glBindTexture( GL_TEXTURE_2D, id );
int level = 0;
jobject mippedBitmap = srcBitmap;
while (width >= 2 && height >= 2) {
jniEnv->CallStaticVoidMethod(s_GLUtilsClass, s_texImage2DMethodID,
GL_TEXTURE_2D, level, mippedBitmap, 0);
width >>= 1;
height >>= 1;
level++;
mippedBitmap = createScaledBitmap(jniEnv, srcBitmap, width, height, true);
}
为简洁起见,我省略了所有 Bitmap.recycle()/NewGlobalRef() 调用。createScaledBitmap
显然是对 Bitmap.createScaledBitmap() 的 JNI 调用。
我还尝试了其他版本的 texImage2D,它采用位图的格式和类型。我已经验证它始终是 RGBA。
编辑:详细说明纹理 - 它们实际上几乎是黑色的。我在 mips 上尝试了使用明亮颜色的 eraseColor(),但它们仍然非常暗。