Android Opengl ES对象边缘上的暗像素

Android Opengl ES对象边缘上的暗像素,第1张

概述我想请您注意以下图片首先是原始图片然后如何在屏幕上呈现如您在原件上所看到的,一切都很好,呈黄色,边缘略带透明度,看起来很光滑.但是当我渲染时,会出现一些变暗的像素.为了避免通常的答案,我得到了我用gl.glTexImage2D(GL10.GL_TEXTURE_2D,level,GL10.GL_RGBA,width,

我想请您注意以下图片

首先是原始图片

然后如何在屏幕上呈现

如您在原件上所看到的,一切都很好,呈黄色,边缘略带透明度,看起来很光滑.

但是当我渲染时,会出现一些变暗的像素.

为了避免通常的答案,我得到了

我用

gl.glTexImage2D(GL10.GL_TEXTURE_2D, level, GL10.GL_RGBA, wIDth, height, 0, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, pixelBuffer);

而不是glutil工具

gl.glEnable(GL10.GL_BLEND);gl.glBlendFunc(GL10.GL_SRC_Alpha, GL10.GL_ONE_MINUS_SRC_Alpha);

有人对此有解决方案吗?

谢谢

杰森

编辑

我做了一些挖掘.在原始图像中,我的背景已经与硬币相同,并且使用了Alpha蒙版.
我还检查了一下,当我加载位图时,似乎所有具有Alpha 0的位图都会自动设置为0,0,0,0.这可能是问题所在.

编辑
实际上,这似乎是个问题.我检查了打开的位图的值,透明像素的值是0,0,0,0而不是我设置的颜色.这是位图问题还是我如何创建图像?

// Load up, and flip the texture:            Bitmap temp = BitmapFactory.decodeResource(context.getResources(), resource, opts);            Bitmap bmp = Bitmap.createBitmap(temp, 0, 0, temp.getWIDth(), temp.getHeight(), flip, true);            temp.recycle();

解决方法:

图片的背景颜色是什么?即,删除Alpha通道时会是什么样?我猜-它是黑色的吗?尝试将背景颜色设为与徽标相同的颜色(即淡黄色),然后重试.

编辑:也可以根据评论编辑答案.即使您正确设置了周围像素的RGB颜色,某些图像压缩格式仍可能对其进行“优化”,并将所有完全透明的像素转换为(0,0,0,0),这将导致您在使用时描述的问题双线性过滤.尝试使用其他文件格式,或者进行研究以查看是否可以在特定的压缩方式下关闭此功能,或者考虑在加载后修复代码中的图像.

总结

以上是内存溢出为你收集整理的Android Opengl ES对象边缘上的暗像素全部内容,希望文章能够帮你解决Android Opengl ES对象边缘上的暗像素所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1068991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存