Opengl es OpenGl中的掩蔽区域

Opengl es OpenGl中的掩蔽区域,opengl-es,libgdx,Opengl Es,Libgdx,我正在做一个libdgx游戏。我有一个进度条,只需要填充它的内部。如果它是一个正方形的进度条,这将是很容易的-但我的图形人员希望圆形的结束。下面的例子 为了填充进度条,我有一个1px宽的纹理,我将其拉伸到所需的宽度。有没有一种方法可以在OpenGL中使用遮罩,这样当我绘制纹理填充进度条时,它只填充蓝线内部 谢谢。您可以使用Libgdx/Android ninepatch纹理渲染具有固定大小角和“弹性”中间的纹理。请参见要执行此操作,我认为您需要一个自定义着色器(这样您的进度条就不会与其他精灵一

我正在做一个libdgx游戏。我有一个进度条,只需要填充它的内部。如果它是一个正方形的进度条,这将是很容易的-但我的图形人员希望圆形的结束。下面的例子

为了填充进度条,我有一个1px宽的纹理,我将其拉伸到所需的宽度。有没有一种方法可以在OpenGL中使用遮罩,这样当我绘制纹理填充进度条时,它只填充蓝线内部


谢谢。

您可以使用Libgdx/Android ninepatch纹理渲染具有固定大小角和“弹性”中间的纹理。请参见

要执行此操作,我认为您需要一个自定义着色器(这样您的进度条就不会与其他精灵一起批处理)。否则,OpenGL只能屏蔽矩形(称为剪切)。我可以想出几种不同的方法来做你想做的事。有些涉及多重纹理,这需要创建您自己的网格,而不是使用SpriteBatch,或者仔细设置TextureAtlas和自定义着色器。但是如果填充可以用函数从上到下描述(或者如果它只是一个纯色),你可以在着色器中使用它,使用自定义的精灵子类。另一个要考虑的选项是使用一个模板缓冲区。哦,是的,就是这样,但是它会有别名边。如果你随后在整件事情上画了一个边界精灵,这不是问题。