问题标签 [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 投票
0 回答
193 浏览

c# - 在 Microsoft XNA 中使用 spritebatch 和 base.draw

我想知道这是否正确或是否应该更改?

我计划在我想改变我在主代码中绘制的瓷砖数量时调用这些,或者每当我想改变我的渲染目标时调用它们。基本上我想要自由去嘿嘿给我一个表面并且有任何类型的表面返回给我。无需担心启动它

我的这段代码中还有另一个问题:我返回的表面是否会实例化一个新的 COPY,或者我是否会获得从实例化它的函数中创建的相同实例。谢谢你。

我还需要知道我是否调用了 new_texture,然后我对那个纹理表面进行了一堆 spritebatch,然后我决定,好吧,现在我不想只拥有它我想渲染它。当我在绘图循环结束后从我的绘图函数中调用 base.draw() 会发生什么时,我在 game.draw() 之前调用两组 spritebatches,其中 spritebatches 必须渲染到一个表面纹理,然后另一个,按特定顺序?我的渲染顺序会混乱还是无关紧要?这样做的任何替代方法,我愿意接受建议吗?

另一个问题,当我调用 draw_texture 函数时,它告诉我图形设备为空。我不知道为什么!!!!

这是代码

0 投票
1 回答
725 浏览

performance - 在 LibGDX 中渲染图块的性能成本

我正在编写基于瓷砖的策略游戏,所以我有正交视图。渲染的屏幕有 40*20 宽的瓦片,每个瓦片有 50*50px 的纹理。我有一层瓷砖(比如说草),我在上面放了墙。游戏现在以 60fps 流畅运行。但是,当我在上面放置墙壁时,我是否需要移除底层草砖?因为草是在墙之前渲染的,所以墙会透支它,但我担心性能成本。我在 SpriteBatch 上渲染它,并且没有关于 SpriteBatch 中的内部进程如何工作的文档。

所以问题是:渲染无论如何都不可见的瓷砖是否对性能不友好?

0 投票
2 回答
426 浏览

xna - XNA 4.0:如何在绘制到屏幕后删除文本?

今天是个好日子。

我正在尝试绘制文本“通过完成!” 使用此代码筛选:

spriteBatch.DrawString(font, "PASS COMPLETE!", new Vector2(30, 130), Color.White);

哪个会触发正确的 IF 语句。但是,我该如何从屏幕上删除该文本?我真的完全不确定从这里往哪里走,我的导师希望我在谷歌上搜索答案或在教科书中找到答案。我翻遍了我的 XNA 教科书,但找不到删除该文本的方法。

感谢您的任何帮助。

更新:

protected override void Draw(GameTime gameTime)

我在这里包含了 IF 语句。基本上它检查与 p_Receiver 的冲突,如果它是布尔检查,它会绘制 DrawString。我应该从不同的角度来看这个吗?

最后:

我继续使用以下作为答案,并且它比以前更好。:)

目前工作良好。

我很感激。

0 投票
1 回答
984 浏览

c# - c# XNA 2D 失真效果

我正在尝试使用置换贴图实现 2D 失真效果,我将在运行时通过组合这样的图像来创建它。置换贴图的链接

但由于 (255,255,x) 等于没有位移,我无法将这些图像与现有的 BlendModes 结合起来。

所以我想将信息存储在颜色的 RGBA(对于 x+、y+、x-、y-)中,但是渲染到 RenderTarget2D 会将 Alpha = 0 的每种颜色设置为 Alpha = 0 的黑色。有没有更好的方法来结合置换贴图或防止这种行为的方法?

0 投票
1 回答
116 浏览

java - SpriteBatch 不适用于参数 JAVA libgdx

我正在尝试使用精灵批处理来旋转具有如下纹理的矩形:

game.batch.draw(图像, (float)x, (float)y, (float)42.5, (float)33, (float)85, (float)66, (float)1, (float)1, (float )角度度);

但我得到错误:

我想我有正确数量的参数,它们都是浮点数,我错过了什么。

0 投票
1 回答
95 浏览

java - 为什么这个 SpriteBatch 在 C# 中工作而不在 Java 中工作?

我有用两种不同语言编写的 SpriteBatch 版本:

Java: http: //pastebin.com/7gwHBTXi C#: http: //pastebin.com/cTFn26H8

它们具有相同的代码,并且都在一个简单的程序中进行以下调用:

爪哇:

C#:

它们的 OpenGL 上下文完全相同(3.3)。

但是,C# 版本做了它应该做的事情(绘制一个白色矩形),但 Java 版本什么都不做(只有绿色背景)。谁能告诉我有什么区别?什么不工作?谢谢你。我已经坚持了三个星期。

0 投票
0 回答
61 浏览

java - 将主体附加到 SpriteBatch

我试图绘制一个 SpriteBatch 以同步到身体的位置。我不确定这是否是正确的方法(在andengine中你只会使用物理连接器)但我尝试在身体存储的位置绘制精灵。

我遇到的问题是,在屏幕上我看到了 mrsaiBody 的形状,我看到了我制作的地面。当形状与地面接触时,即使形状不是,x 和 y 值仍会继续受到重力的影响。当我使用batch.draw时,如何让这个形状的当前位置与位置相匹配?

0 投票
2 回答
520 浏览

eclipse - 在 libgdx 的 Batch 接口中,这些参数是做什么用的?

我试图弄清楚所有这些参数的作用,因为当我绘制我的子弹图像时,它显示为一个实心块而不是一个在纯色和空白部分之间交替的精灵(即,而不是 10101,它是 11111,其中 0 是纹理中的空白部分)。

之前,我正在使用batch.draw(texture, float x, float y)它并正确显示纹理。但是我在玩旋转,这是最合适的 draw 版本:

我可以找出明显的那些originXoriginY(我相信从左上角像素绘制图像的位置)但是我不知道纹理后的x坐标y是什么。

scaleX, scaleY, rotation, and flipXflipY我知道该怎么做,但是什么是srcXand srcY,以及srcWidthand srcHeight

编辑:我玩了一下,弄清楚了 srcX,srcY 和 srcHeight,Width 的作用。我无法弄清楚 originX,Y 做了什么,即使我猜它是图像的中心点。既然我不想玩这个,我应该把它保留为 0,0 吗?

操纵图像中心点的常见用途是什么?

0 投票
1 回答
91 浏览

c# - 塔防使塔面对怪物 spritebatch 旋转

这是我绘制塔的代码:

我的代码获取塔的位置并将其放置在某个位置,但是当我的旋转方法发生并旋转图像时

我这样做是基于:

旋转真的很奇怪,这是它的正常外观:

在此处输入图像描述

但是当它旋转时,它是这样的:

在此处输入图像描述

最后,当它向下看时,它完全偏离了路径,它没有按中心旋转,但整个图像都在移动,为什么要这样做?

在此处输入图像描述

只有第一个图像实际上是正确位置的塔

(我没有足够的声誉来发布图片)

0 投票
2 回答
1990 浏览

java - libgdx spritebatch 不渲染纹理

我正在使用 LibGDX 开发一个自上而下的 RPG 游戏,并且正在为我的游戏创建一个 Ortho.. 相机。然而,这样做,现在只有我的瓷砖纹理渲染。这是渲染代码的样子:

相机初始化为new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

(请注意,camera.调用实际上是在world.update方法中,我只是想我会尽量减少此处所需的代码量)

更新/渲染:

世界的渲染方法最终调用这个:

region一个在哪里TextureRegion

没有相机,一切都很好,所以我很困惑为什么纹理现在只能按顺序渲染(我的平铺纹理在实体下方渲染)有人知道为什么会这样吗?如果您想查看更多代码,我的 github 上也有这个:点击这里