gpt4 book ai didi

安卓。和引擎。使用透明度的图像伪影

转载 作者:行者123 更新时间:2023-11-29 14:18:56 24 4
gpt4 key购买 nike

我正在使用 AndEngine(基于 OpenGL 的 2D 引擎)。当我使用具有透明度的纹理(PNG 图像)时,我在图像的边界上有图像伪影。我需要帮助解决这个问题。我附上了2张图片。首先,我只使用某种字体显示文本。第二个你可以看到圆角,但在纹理的角落你也可以看到伪影。请注意,这仅发生在真实设备上。在模拟器上一切正常。我的设备是运行 Android 2.1 的三星 i5700 Galaxy Spica
corner with artifact text with artifact

最佳答案

AndEngine Artifacts 大社区维基百科

Sprite Artifact

BILINEAR 过滤插值最近的四个像素的颜色,这使得纹理在缩放/旋转或以非整数值移动时很好,但有一些困难。

黑色或暗线伪影

纹理图集背景可能是黑色的,texregion 的边缘像素与这个背景混合在一起。使用自定义透明纹理图集,或使用修改后的 TextureAtlas 构建器,它会自行填充透明度(TODO 找到描述此内容的论坛链接)

Sprite 边缘有不需要的 alpha

如果纹理背景是透明的,alpha 仍然混合到边缘颜色中。向纹理区域添加 1 像素的拉伸(stretch)(在边缘的额外行/列中重复边缘像素),并将区域边缘定位在原始边缘像素和添加的边缘像素之间。这将确保双线性插值仅选取您所在区域的像素。

其他边神器

如果纹理区域太近,区域边缘可能会占用其他区域边缘的一些像素。在纹理区域之间使用填充。

文本 Artifact

基线下偶发的小垂直线(GLES1)

在我的字体中,J 字符有一个过度向左延伸的下部曲线,这在渲染 I 字母时会导致一个小的伪影,因为 IJ 在纹理中彼此相邻,并且可能太近了。

尝试降低字体大小,增加纹理大小,或修改更大的 Font.PADDING 值(5 对我有用,而不是 1).但是请注意,默认情况下,增加 PADDING 也会增加行间距,这可能不是我们想要的。可以在必要时引入和使用新的 YPADDING 进行补偿。

消失的字母

字母按需渲染到字体纹理图集。这可能会导致纹理图集空间不足,从而产生有趣的效果(参见 Dissapearing ChangeableText)。

一种解决方案是将此代码段插入到 Font#createLetter(char) 方法中:

    if (this.mCurrentTextureY + letterHeight > textureHeight) {
throw new IllegalStateException("Could not allocate space for letter " + pCharacter + " on texture. " +
"Please enlarge the texture atlas size. This would be letter #" + this.mLetterCount);
}

关于安卓。和引擎。使用透明度的图像伪影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8896754/

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