问题标签 [spritebatch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
303 浏览

matrix - 矩阵创建规模,这里发生了什么?

我正在尝试使用 spritebatch 执行一些矩阵转换,但我不明白比例矩阵发生了什么。

通常我使用这个顺序得到最好看的结果,但是如果我将比例更改为在旋转之前一切都会变得很奇怪,即使使用 (1.1.0) 比例,所以我只是得到原始大小。

让我们将比例固定为 1(不包括 Z),如果我将顶点与比例保持不变(我认为),它为什么/如何影响旋转?

例子:

平移->旋转->缩放->平移

http://imgur.com/ihdlepa

平移->缩放->旋转->平移

http://imgur.com/YpbOnqw

提前致谢, 罗杰

0 投票
2 回答
2971 浏览

java - LibGDX sprite 批量字体坏比例渲染

我在尝试将文本/对话系统放入我的游戏项目时遇到问题。当我创建一个字体并通过相机更新的 spriteBatch 调用它的 draw 方法时,字体的每个像素都具有一个精灵的相同尺寸。

我得到以下渲染:

字体绘制比例问题

您可以在图片中看到“hello”的“h”顶部,每个像素都超大。相同的相机用于渲染图块/精灵。

我想要达到的效果是这样的:

艾略特任务示例

这是代码:

我试过使用font.setScale()没有成功。

有人知道如何实现这一目标吗?

0 投票
2 回答
1030 浏览

java - Libgdx 将 SpriteBatch 保存在纹理中

我想知道是否可以将 spriteBatch 保存在纹理中。

在批处理中绘制了一些东西之后,我想将所有包含 SpriteBatch 的东西保存在一个纹理中(类似于屏幕截图)。

我不知道该怎么做,我在网上和 libgdx 文档上搜索但没有找到。

谢谢

0 投票
1 回答
413 浏览

c# - XNA - 绘制许多矩形会导致滞后

我正在 XNA 中创建一个需要绘制数千个小矩形/正方形的游戏。随着数量的增加,性能会变得更差。这是我当前使用的代码:

我要求spriteBatch.Draw()每一个方格,我正在重绘整个屏幕只是为了添加一个方格。我已经进行了大量搜索,我相信解决方案是绘制一个纹理,然后调用Draw()该纹理,但我找不到相关示例。

0 投票
1 回答
468 浏览

c# - 在 MonoGame 中绘制图纸的子图像

所以我知道标题可能有点含糊,所以我将尝试解释我的意思。基本上我想要完成的是绘制许多不同的对象和图像,但是在一种缓冲区中,这样我以后可以使用绘图函数只绘制这个缓冲区的一部分。

我正在尝试在 MonoGame 中制作滚动功能,就像 WinForms 中的水平/垂直滑块控件一样,并且我得到了一个滑块工作。我想要的是让滑块准确地切断此滑块窗口内的其他控件。

现在我明白我想要完成的事情RenderTarget2D就是存在的,当我尝试使用它时,我发现让它做我想做的事情非常困难。我现在的主要问题是,当我在 中绘制某些东西时RenderTarget,一旦我设置了它就会清除其他所有内容SetRenderTarget(null)(以便我再次在游戏窗口上绘制)。

长话短说,以下代码在我执行RenderTarget2D代码之后绘制了所有内容,但清除了之前的所有内容。

另外,我有这些:

我无法想象最后一点有多重要,但我想我不妨添加一点太多而不是太少一点。

是的,所以如果有人知道可能出了什么问题,我真的很想知道,因为现在我一直在查看这段代码并试图弄清楚它的头部和尾部大约 5 个小时左右,而我似乎一点进展都没有。

谢谢

0 投票
2 回答
1428 浏览

3d - 在 libgdx 的 3D 空间中渲染 SpriteBatch + ParticleEffect?

我正在使用 libgdx 0.9.9 版。我想在 3D 空间中使用 ParticleEffect 以及其他 3D 模型来渲染火焰效果。

我的代码的逻辑流程:

  1. 模型批处理开始
  2. 使用 ModelBatch 渲染 Bullet World 中的所有 3D 模型
  3. 模型批次结束
  4. SpriteBatch 开始
  5. 使用 SpriteBatch 使用 ParticleEffect (effect.draw) 渲染火焰效果
  6. SpriteBatch 结束
  7. 使用 Stage 绘制 HUD

问题:火焰效果在 3D 空间中的某个点渲染得很好。但是当我旋转相机以使 3D 模型位于相机和火焰效果之间时,火焰效果会呈现在 3D 模型上,而不是隐藏在 3D 模型后面。

我尝试过的事情:

  1. 我尝试先渲染 SpriteBatch,然后渲染 3D 模型:在这种情况下,火焰效果不可见。我猜测 3D 模型(图层)正在渲染火焰效果(图层),因此效果不可见。
  2. 我尝试在第 1 步和第 3 步之间渲染 SpriteBatch,即在 modelbatch.begin 和 modelbatch.end 之间渲染 SpriteBatch。在这种情况下,火焰效果根本不可见。
  3. 我尝试将粒子效果渲染为 Actor(添加到 HUD 舞台)。正如预期的那样,火焰效果渲染为最顶层 HUD 层的一部分,同样的问题仍然存在。
  4. 我曾尝试探索贴花,但发现粒子效果不适用于 DebcalBatch。我不想在贴花上显示动画火焰 .gif,因此没有尝试。

有没有人遇到过类似的问题?有什么建议的解决方法可以使 ParticleEffect 成为 3D 世界的一部分,以便在被其他 3D 模型阻挡时隐藏起来?我在 youtube 上看到了 Xoppa 发布的关于 libgdx 中的 3D 粒子的视频,但没有提到任何步骤/解决方案。任何帮助将不胜感激。

0 投票
1 回答
326 浏览

java - Sprite 粘在 libgdx 中的相机上?

我想让我离开它的精灵在屏幕上,并在世界上拖动相机。但是精灵粘在相机上,当我拖动相机时,它仍然在屏幕底部。

tilemap(.tmx 文件)和渲染器不会发生这种情况:相机可以在 tilemap 上拖动,并且 tilemap 不会粘在相机上。使用 spriteBatch 强硬时,精灵会停留在屏幕底部。

这是我的代码:

0 投票
1 回答
361 浏览

java - libGDX performance: best time for OrthographicCamera.update()

I just have a quick simple question (it may be fairly obvious to you but I'm rather new to libGDX and graphics in general):

When is it best to call the camera.update() method in libGDX? Specifically, is there anything else in the render method [I do know that I have to call it in the rende-method :-) ] that I definitely want to do before or after updating the camera (e.g. starting the batch)? Or is it just completely up to me?

Thanks for answering,

Tony

0 投票
1 回答
1040 浏览

c# - 当确实没有任何无效参数时,MonoGame SpriteBatch.Draw() 无效参数?

我正在 MonoGame 中绘制一个 Sprite,我正在尝试使用 Draw() 方法和允许 SpriteEffect 作为参数传递的重载,但我得到一个红色下划线,它说:

现在,我有理由相信控制台在撒谎。其中一个原因是它没有任何翻转的无效参数。

这是我的代码的样子:

Texture是我在构造函数中初始化的本地 Texture2D 变量。destinationRectangle是一个作为参数传递给我自己的 Draw() 函数的 Rectangle。null是不言自明的。这也适用于接下来的三个论点。effect只是简单地作为参数传递,最后 1f 显然是 1f。

我知道我在这里做错了什么,我只是不明白我做错了什么。有人可以帮忙吗?

0 投票
2 回答
2858 浏览

javascript - 从 HTML 页面调用 .bat 脚本

我编写了一个客户将在 Windows Server 上安装的软件,并编写了一个 HTML 页面作为安装指南。如何在 HTML 页面上创建一个链接,该链接将以管理员身份调用我的 .bat 脚本。.bat 脚本将为客户处理安装。HTML 页面将作为文件运行,即没有任何服务器(包括本地主机)。.bat 脚本、html 页面和二进制文件将位于同一文件夹中。该文件夹可能位于 Windows 服务器上的任何位置(我不知道客户会将文件夹放在哪里)。