gpt4 book ai didi

java - PNG 纹理未在 HTC desire 上加载

转载 作者:行者123 更新时间:2023-11-30 11:58:55 26 4
gpt4 key购买 nike

您好,我正在使用 OpenGL es 为 android 开发游戏,但遇到了一个问题:

我的游戏在模拟器(来自 eclipse 的 Windows xp 和 vista)中加载良好,它在 T-Mobile G2(HTC Hero)上也加载良好,但是当我在我的新 HTC Desire 上加载它时,似乎没有任何纹理加载正确(或根本)。我怀疑是 BitmapFactory.decode 方法,尽管我没有证据表明这是问题所在。

我所有的纹理都是 2 的幂并且 JPG 纹理似乎可以加载(虽然它们看起来质量不佳)但是任何 GIF 或 PNG 根本不会加载,除了 2x2 红色方 block 加载正常和一个映射到 3d 对象但似乎用最接近的颜色填充网格的每个三角形的纹理。

这是我加载图片的代码:

     AssetManager am = androidContext.getAssets();
BufferedInputStream is = null;
try {
is = new BufferedInputStream(am.open(fileName));

Bitmap bitmap;

bitmap = BitmapFactory.decodeStream(is);

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();
} catch(IOException e) {
Logger.global.log(Level.SEVERE, e.getLocalizedMessage());
} finally {
try {
is.close();
} catch(Exception e) {
// Ignore.
}
}

谢谢

最佳答案

大小实际上是纹理的输入,例如我使用矩形作为 0、0、1024、1024 的 BitmapFactory.decodeStream 的参数。当然它必须是 0、0、1023、1023。对于一个引用看下面的代码,我在Desire S和Galaxy S2上测试过:

    InputStream is = context.getResources().openRawResource(resource);
Bitmap bmp;

gl.glBindTexture(GL10.GL_TEXTURE_2D, texID[tex]);

// Mendatory, tells openGL how to render the texture, nearest will look sharp, smooth will look blurry
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST);

// Not mendatory, tells openGL what to do when sprite is smaller or bigger than object
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);

gl.glTexEnvx(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE);

try {
BitmapFactory.Options sBitmapOptions = new BitmapFactory.Options();
// Set our bitmaps to 16-bit, 565 format...uhm, this looks more like 32 bit: 8888
sBitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
bmp = BitmapFactory.decodeStream(is, new Rect(0, 0, 1023, 1023), sBitmapOptions);

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bmp, 0);
bmp.recycle();
} finally {
try {
is.close();
} catch(IOException e) {
// Ignore.
}
}

关于java - PNG 纹理未在 HTC desire 上加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2868504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com