我正在使用GameMaker:Studio制作格斗游戏。我想使用GLSL ES(默认)着色器实现scale2x算法。我是着色器的新手,我无法在线找到任何解决方案。基本上我想要一个这样的着色器:
对此:
你可以教我如何制作这样的着色器吗?任何帮助将不胜感激。 这是scale2x网站:http://www.scale2x.it/答案 0 :(得分:1)
我无法教你如何在stackoverflow上制作着色器,但我会告诉你你正在寻找的操作称为仿射变换。 “仿射”只意味着直线保持笔直。大多数编程环境(包括opengl的所有变体)都使用矩阵变换来执行您正在讨论的操作类型。由于有很多方法可以使用矩阵来转换某些东西,所以从最简单的情况开始。为了在2D中扩展某些内容,就像你要求的那样,使用一个如下所示的比例矩阵:
[ xScale 0 0 ]
[ 0 yScale 0 ]
[ 0 0 1 ]
// where scale is a percentage.
// 100% = 1.0
如果您可以创建这样的矩阵并使用您必须使用该矩阵执行“仿射变换”的代码,那么就应该这样做。
请注意,这会扩大图像中的每个点/像素。它不一定会为图片添加信息。因此,如果你有一个低分辨率的图像,当你扩展它时看起来会非常糟糕。
在图像空间中创建信息的问题是插值和外推。 通常它被称为“重新取样”,它也与“卷积”有关。