Java UV坐标包括相邻的精灵
我的精灵是统一精灵表的一部分,每个精灵都在四边形的顶部和右侧使用额外的像素绘制。他们似乎来自附近的精灵。下面是我如何定义UV坐标的:Java UV坐标包括相邻的精灵,java,android,opengl-es-2.0,Java,Android,Opengl Es 2.0,我的精灵是统一精灵表的一部分,每个精灵都在四边形的顶部和右侧使用额外的像素绘制。他们似乎来自附近的精灵。下面是我如何定义UV坐标的: ratio = spriteCountX / spriteCountY; UVcoords.x = (float)(index % spriteCountX) / (float)spriteCountX; size.x = ratio / (float)spriteCountX; UVcoords.y = (float)(index / spriteCount
ratio = spriteCountX / spriteCountY;
UVcoords.x = (float)(index % spriteCountX) / (float)spriteCountX;
size.x = ratio / (float)spriteCountX;
UVcoords.y = (float)(index / spriteCountX) / (float)spriteCountY;
size.y = 1.0f / (float)spriteCountY;
和顶点数据:(x、y、z位置加上每个顶点的UV坐标)
纹理过滤器定义为:
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,
GLES20.GL_NEAREST);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER,
GLES20.GL_NEAREST);
我尝试将GL\u夹具\u添加到\u边缘
,但没有成功:
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,
GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,
GLES20.GL_CLAMP_TO_EDGE);
下面是我的意思的一个例子:
这是一个名为“纹理图谱边缘瑕疵”的已知问题。这是由于坐标的舍入,这些坐标是间隔[0..1]内的浮动值 彻底减少伪影的唯一解决方案是在精灵之间引入一些像素填充。我建议你有两种选择:
- 从开始创建工具以修改现有纹理图集
- 使用精灵图纸编辑器可以创建精灵图纸纹理,并在atlas的精灵之间填充
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,
GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,
GLES20.GL_CLAMP_TO_EDGE);