我一直在寻找答案大约 2 个小时,但我还没有找到我想要的答案。我的问题是,是否有可能以及如何绘制圆形纹理,以便在圆圈之外,纹理将是透明的,甚至可能吗?
提前致谢!到目前为止,这个网站提供了很大的帮助!
最简单的方法是打开 Photoshop 之类的程序并制作带有 Alpha 通道的图像。这意味着:从一个完全透明的图像开始并在其上画一个圆圈。然后将其另存为.png
然后,您可以将其加载到游戏中并使用SpriteBatch
. 它(或更好的图形卡)知道如何处理 alphachannel 并将使除圆圈之外的所有内容完全不可见。
这样您就不必在运行时操作任何像素图,并且您不限于像圆形这样的简单形状。
如果您希望在圆圈中看到的纹理部分在执行过程中不会改变,最简单的方法是打开 Photoshop,制作您想要的,将其导出为图像,然后将其加载Texture
到Sprite
您的代码。
但这也可以在运行时通过 OpenGL 使用Stencil测试来完成。如果圆圈中显示的部分在执行期间必须可更改,这是唯一的解决方案。
如果您对图像使用的不是 .png 格式, pixmap使用此链接
如果您使用的是 png 图像,请将其分开,然后只需绘制圆。圈外将保持透明。