Libgdx 为单个角色设置着色器
我今天开始处理一些着色器,现在我被卡住了。我想对scene2d舞台中的某些演员(图像)应用着色器。有可能吗? 我只对整个场景有一个绘制方法,但不适用于单个演员或演员组 在scene2d舞台之外,我只想做这样的事情:Libgdx 为单个角色设置着色器,libgdx,Libgdx,我今天开始处理一些着色器,现在我被卡住了。我想对scene2d舞台中的某些演员(图像)应用着色器。有可能吗? 我只对整个场景有一个绘制方法,但不适用于单个演员或演员组 在scene2d舞台之外,我只想做这样的事情: batch.setShader(shader); batch.begin(); batch.draw(Image); batch.end(); batch.setShader(null); batch.begin(); 如何在scene2d环境中实现这一点?您可以在参与者的绘制方法
batch.setShader(shader);
batch.begin();
batch.draw(Image);
batch.end();
batch.setShader(null);
batch.begin();
如何在scene2d环境中实现这一点?您可以在参与者的绘制方法中更改着色器,然后将其更改回(当着色器更改时,批处理将自动处理刷新): 请记住,每次执行此操作时,都会导致批刷新。如果要使用自定义着色器绘制几十个角色,则可能应该将它们放入一个组中,以更改着色器,从而使该组的批处理只刷新一次:
//Custom Group:
public void draw (Batch batch, float parentAlpha){
batch.setShader(customShader);
super.draw(batch, parentAlpha);
batch.setShader(null);
}
我不确定我是否理解你的意思,但你可以在
setShader()
callsYap之间做一些类似于stage.draw()的事情,但那是整个阶段,没有一个动作。你如何更改draw方法?不确定你的意思。我上面的例子分别是您自己的Actor和Group自定义子类。哦,好吧,这就是我所想的,我只是不确定这是否是一种有效的方法
//Custom Group:
public void draw (Batch batch, float parentAlpha){
batch.setShader(customShader);
super.draw(batch, parentAlpha);
batch.setShader(null);
}