Android GLUtils.texImage2D 在使用 OpenGLES 2.0 着色器时产生一些黑色纹理

发布于 2024-11-18 10:33:00 字数 309 浏览 3 评论 0原文

我正在将应用程序从 OpenGLES 1.0 转换为 OpenGLES 2.0,并且我已经成功完成了大部分工作。令人恼火的是,一些纹理(每次都有很多相同的纹理)呈现黑色而不是任何有用的东西。它们是小图像(大约 32x32),采用带有 Alpha 通道的 PNG 格式,尽管这本身并不是唯一的,因为类似的图像加载得很好。

我已将范围缩小到 GLUtils.texImage2D 在这些图像上返回 1280 错误,但我不明白为什么它会导致问题。

有人能建议为什么会发生这种情况和/或可能的补救措施吗?手动使用 GLES20.glTexImage2D 是否合适(无论它做什么)?

I'm in the process of converting an app from OpenGLES 1.0 to OpenGLES 2.0 and I've managed to get most of it done. Annoyingly though a few textures (out of many and the same ones each time) render black instead of anything useful. They are small images (about 32x32) and in PNG format with an alpha channel although that isn't a unique in its own right as a similar image is loading fine.

I've narrowed it down to GLUtils.texImage2D returning a 1280 error on those images but I don't see why it should cause a problem.

Can anybody suggest why this could be occuring and/or possible remedies? Would it be pertinent to use GLES20.glTexImage2D manually (whatever it does)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吻风 2024-11-25 10:33:00

我遇到了类似的问题,并通过使用以下方式加载图像来解决它:

BitmapFactory.decodeResource(context.getResources(), R.drawable.resourceName)

而不是示例中的代码(我的猜测是这就是您当前拥有的):

InputStream is = mContext.getResources()
        .openRawResource(R.raw.robot);
    Bitmap bitmap;
    try {
        bitmap = BitmapFactory.decodeStream(is);
    } finally {
        try {
            is.close();
        } catch(IOException e) {
            // Ignore.
        }
    }

I had a similar problem and solved it by loading my images using:

BitmapFactory.decodeResource(context.getResources(), R.drawable.resourceName)

instead of the code from the sample (my guess is this is what you currently have):

InputStream is = mContext.getResources()
        .openRawResource(R.raw.robot);
    Bitmap bitmap;
    try {
        bitmap = BitmapFactory.decodeStream(is);
    } finally {
        try {
            is.close();
        } catch(IOException e) {
            // Ignore.
        }
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文