Iphone ios游戏制作一个遮罩层效果

Iphone ios游戏制作一个遮罩层效果,iphone,ios,opengl-es,cocos2d-iphone,Iphone,Ios,Opengl Es,Cocos2d Iphone,我需要一个覆盖整个屏幕的“遮罩”层,中间部分(一个圆圈)是透明的。然后我可以使用触摸移动遮罩层。用户只能看到中间的透明部分。 我认为png文件没有帮助,因为文件需要非常大才能覆盖整个屏幕 那么,有没有可能通过编码来实现呢 我是在网上找到的,但对openGL了解不多 如果我能使用CCMaskLayer并输入半径,那就太好了。我可以自己处理触摸事件 附加的png文件是预期结果,中心部分是透明的。我需要这个来覆盖我的屏幕,只显示中间部分。红色部分被覆盖 您可以通过两种方式使用裁剪的圆形纹理解决此任务:

我需要一个覆盖整个屏幕的“遮罩”层,中间部分(一个圆圈)是透明的。然后我可以使用触摸移动遮罩层。用户只能看到中间的透明部分。 我认为png文件没有帮助,因为文件需要非常大才能覆盖整个屏幕

那么,有没有可能通过编码来实现呢

我是在网上找到的,但对openGL了解不多

如果我能使用CCMaskLayer并输入半径,那就太好了。我可以自己处理触摸事件


附加的png文件是预期结果,中心部分是透明的。我需要这个来覆盖我的屏幕,只显示中间部分。红色部分被覆盖

您可以通过两种方式使用裁剪的圆形纹理解决此任务:

1) 在屏幕中心绘制具有圆形纹理的精灵,并在周围(顶部、底部、左侧和右侧)绘制具有小红色纹理但缩放以覆盖所有屏幕的另外4个精灵

2) (更优雅但更难实现)使遮罩层全屏显示,但调整纹理坐标。详情如下:

  • 将环绕模式设置为
    GL\u-CLAMP\u-to\u-EDGE
    以创建圆形纹理
  • 调整层顶点的纹理坐标(要执行此操作,您需要对base
    CCLayer
    子类化):


这里
v
表示顶点位置和
t
-纹理坐标。您需要为层的四个角点设置正确的纹理坐标。将来,如果您想拖动圆,则需要将一些偏移值添加到纹理坐标。

我编写了一个CCMaskLayer来执行完全相同的操作


此链接可能有助于您找到第一个解决方案您的意思是我可以自由缩放其他8个正方形吗?所以我可以用一个小的png文件来放大它?据我所知,伸缩性非常广泛。透明度可能会改变:(是的,你甚至可以使用具有普通白色纹理和颜色的精灵)。谢谢你的回答,但是我仍然在等待OpenGL解决方案,因为它们更优雅,这样我就可以很容易地改变中间的形状(通过编码而不是固定的PNG文件)。