当前位置: 首页 > 知识库问答 >
问题:

Libgdx SpriteBatch绘制演员,但不绘制其他纹理

彭成天
2023-03-14

我在MyGdxGame中的render方法看起来是这样的,调用舞台绘制自己(连同它的演员),然后我尝试绘制一组纹理以供调试之用。

@Override
    public void render()
    {        
        Gdx.gl.glClearColor(1, 1, 1, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        StageManager.getCurrentStage().act();

        spriteBatch.begin();
        StageManager.getCurrentStage().draw();
        for(int i = 0; i < 100; i++) 
        {
            spriteBatch.draw(TextureManager.getPlayerTexture(), 50*i, 50*i);
        }
    }

舞台和它的一个演员一起绘制,但其他的纹理没有被绘制。

我试过的:在舞台相机上设置批处理投影矩阵(在调用update之后),确保纹理坐标应该是可见的。

共有1个答案

微生欣怡
2023-03-14

通常,您的代码会导致RuntimeException,因为您在绘制阶段之前对批处理调用begin。但是由于您实际上有两个sprite批处理(一个是阶段内部的,因为您没有与它共享原始的),所以没有发生实际的错误。

绘制纹理后,缺少对spritebatch.end()的调用。并且对spritebatch.begin()的调用需要在stage.draw()之后移动。

并且您应该将该sprite批处理传递到Stage构造函数中,因为拥有多个sprite批处理是浪费的。每个sprite批处理使用相当多的内存并编译一个着色器。

 类似资料:
  • 我正在使用SurfaceView通过GLES将相机预览渲染到屏幕上。是否可以在下面的方法中裁剪纹理,然后再进行渲染?我想裁剪一个16:9的纹理,在屏幕上显示为4:3。

  • 问题内容: 这是我的问题…: 在我的活动中,我有一个和一个。我希望Button仅在显示某个可绘制对象时才执行操作。是的,这意味着该代码正在各种可绘制对象之间进行动画处理,从而使其不会中断我想要完成的工作。 没用 并且我将其范围缩小到“ if(vari(drawabledrawable == acertaindrawable)”行的错误。尽管Eclipse并没有公然报告两个可绘制对象是否相同的And

  • 许多插件,比如buttons,自己就做了它们所有的绘制工作。比如你仅仅需要告诉它们你想看到的标签、你想它们使用的字体、绘制按钮的轮廓和焦点矩形。有时候,有必要做些自定义的绘制。在这种情况下,一个 GtkDrawingArea控件可能是正确的选择,这个控件提供了一个画布,在这个画布上你可以绘制并且将其连接到”draw“信号。 控件的内容常常需要被部分或者全部重新绘制。比如,当另一个窗口控件被移动并且

  • 我试图旋转纹理时,我画他们。我认为这样做比在Paint.NET中旋转图像90度并将它们保存在不同的文件中更有意义。我查看了api文档中spritebatch绘图参数,但我就是不明白。有一堆参数,比如srcX、srcY、originX等等。我也想知道如何做同样的纹理区域。以下是api文档页面的链接:http://libgdx.badlogicgames.com/nightlies/docs/api/

  • 问题内容: 在Java中,是否可以制作一个跳过背景,使其背景透明(除了上面的组件之外)是透明的? 问题答案: 它会将绘画背景传递给其父级,后者可能会绘制自己的背景。 您可以进行屏幕捕获,然后使用它来绘制面板的背景。

  • 我用JFreeChart来表示我的x和y数组。这些数组被绘制得很好,但是回归线被破坏了,永远也不会被绘制出来。除了和函数之外,所有函数都可以工作,例如打印值。不知怎的,这两个都不起作用。我不太介意,但我喜欢能够。我的阵列具有正确的数据,因此不确定问题出在哪里。我正在函数中将数组数据导入数据集。我的具有和阵列。它们有和数据类型。