Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Libgdx 为单个角色设置着色器_Libgdx - Fatal编程技术网

Libgdx 为单个角色设置着色器

Libgdx 为单个角色设置着色器,libgdx,Libgdx,我今天开始处理一些着色器,现在我被卡住了。我想对scene2d舞台中的某些演员(图像)应用着色器。有可能吗? 我只对整个场景有一个绘制方法,但不适用于单个演员或演员组 在scene2d舞台之外,我只想做这样的事情: batch.setShader(shader); batch.begin(); batch.draw(Image); batch.end(); batch.setShader(null); batch.begin(); 如何在scene2d环境中实现这一点?您可以在参与者的绘制方法

我今天开始处理一些着色器,现在我被卡住了。我想对scene2d舞台中的某些演员(图像)应用着色器。有可能吗? 我只对整个场景有一个绘制方法,但不适用于单个演员或演员组

在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);
}