剪辑或遮罩 2D 纹理

Posted

技术标签:

【中文标题】剪辑或遮罩 2D 纹理【英文标题】:Clip or Mask a 2D texture 【发布时间】:2010-11-08 00:58:15 【问题描述】:

嘿,我想知道是否有人知道为 gui 或类似系统的菜单使用 2D 纹理进行剪辑。

这是我想要生成的示例输出

拥有一个大小为 500 x 500 的游戏屏幕。 后面有一个大小为 1000 x 1000 的屏幕。

当我在 0, 0 处绘制纹理时,父屏幕为 500 x 500,我希望不显示该组件

但如果我在 500、450 处绘制组件并且纹理宽度和高度为 100,我希望只能看到整个宽度,但只能看到组件高度的一半。

我想知道是否有一种简单的方法可以做到这一点?

编辑:

基本上我想的是 Photoshop 中的蒙版效果。

这是一张图片Clipping picture

黑色轮廓是另一半纹理的绘制位置。

【问题讨论】:

【参考方案1】:

您可以剪切纹理。当生成的形状是多边形时, 只需修改顶点和纹理坐标即可。

当剪裁的纹理是复杂的形状时,事情就会变得更加棘手。

您也可以通过按正确顺序绘制所有内容来进行剪辑。 它可能效率不高,但很容易。

附言一张照片会有所帮助。

【讨论】:

【参考方案2】:

解决这个问题的另一种方法:

基本上你有两个场景要绘制:游戏屏幕(picture 中的蓝色部分)和背景屏幕(picture 中的红色部分)。

我认为您可以在两个不同的位图对象(或图形库中的任何类似对象)中绘制游戏屏幕和背景屏幕。

下一步是将整个背景屏幕位图剪辑到输出位图对象,然后您可以只剪辑游戏屏幕的中心部分(输出屏幕中心的 500 x 500 正方形)。


P.S:如果您可以添加有关您正在使用的图形库的更多详细信息,也许会更好。

【讨论】:

好吧,红色应该是它后面的另一个屏幕。

以上是关于剪辑或遮罩 2D 纹理的主要内容,如果未能解决你的问题,请参考以下文章

UE4 材质纹理必要设置

OpenGL 2D纹理单元&纹理翻转解决策略

Unity3D - 将在 iOS 设备上剪辑纹理的着色器

DirectX11--深入理解与使用2D纹理资源

DirectX11--深入理解与使用2D纹理资源

应用alpha来纹理某个剪辑空间坐标