使用Defold游戏引擎,它迫使地图集中的纹理为2 (384x216 -> 512x256)的幂。Defold不支持视差背景,只有以下选项:
第一个选项不是一种优雅和优化的方法,所以我使用选项Nr.2。
我有一个非常简单的着色器代码,它接受初始精灵的比例和偏移量。如果精灵的大小是2,那么它就能工作。但是我几乎没有比这更多的知识,所以我不知道如何平铺纹理的一部分(原始的不是2的力量)。我可以计算并给出一个比例为vec2(384/512,216/256)的制服。
varying mediump vec2 var_texcoord0;
uniform lowp sampler2D texture_sampler;
uniform lowp vec4 tint;
uniform lowp vec4 scale;
uniform lowp vec4 offset;
void main()
{
// Pre-multiply alpha since all runtime textures already are
lowp vec2 uv = vec2(var_texcoord0.x *scale.x +offset.x, var_texcoord0.y *scale.y +offset.y);
gl_FragColor = tint * texture2D( texture_sampler, uv);
}我希望得到平铺的背景,但它有空的空间,因为强制功率2。
发布于 2019-06-25 15:30:39
所以我在Defold社区得到了帮助,最后得到了这样的片段着色器:
varying mediump vec2 var_texcoord0;
uniform lowp sampler2D texture_sampler;
uniform lowp vec4 tint;
uniform lowp vec4 size; //actually vec2 of pecentage (x,y)
uniform lowp vec4 scale;
uniform lowp vec4 offset;
void main()
{
lowp vec2 uv = vec2(var_texcoord0.x *scale.x +offset.x, var_texcoord0.y *scale.y +offset.y);
uv = vec2(mod(uv.x, size.x), mod(uv.y, size.y));
gl_FragColor = tint * texture2D( texture_sampler, uv);
}https://stackoverflow.com/questions/56756711
复制相似问题