问题标签 [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.
c# - XNA 我的 menuscreen 类将不接受通过以前的 spritebatch.begin 进行的绘图
在我的游戏状态管理系统中,我有一个屏幕管理器和一个菜单屏幕,它们都添加到我当前的游戏中。屏幕管理器打开一个 spritebatch,然后调用所有订阅屏幕的绘制方法,但是当我在我的第一个订阅屏幕中进行第一个 SpriteBatch.Draw 调用时,我收到一条错误消息,指出之前必须调用 SpriteBatch.Begin,这它是。
ScreenManager 绘制代码:
和我的 MenuScreen 绘制代码:
最后是我的基础游戏初始化代码,在其中创建所有这些组件:
注意: MainMenuScreen 继承自作为抽象类的 MenuScreen。我的 MenuScreen 类也从 ScreenManager 类中传递了一个 spritebatch,因此它们应该是相同的 spriteBatch。
c# - C# XNA SpriteBatch 为空?
嘿伙计们,我真的需要一些帮助,我的 spriteBatch 不断返回 NullReference 异常,我不知道我做错了什么!?(我正在制作一个破砖游戏),每当在 Game1.cs 中创建我的砖块时,它都可以正常工作,但是当我将它移动到 Wall.cs(我想在其中显示砖块图案的地方)时,游戏就会崩溃并给出一个空引用异常。这是我的代码:
编辑:通过在 wall.cs 中添加这个来修复旧问题
但是现在碰撞箱根本不起作用。
c# - XNA spriteBatch.Draw - 闪烁的精灵
我正在 XNA 中编写精灵动画。我使用 spriteBatch.Draw 方法来做到这一点:
问题是它几乎可以工作,但在动画快结束时它会闪烁一次并继续动画。会是什么呢?
c# - 使用 2Darrays 在 XNA 中绘制棋盘游戏 Ludo
我是 C# 和 XNA 的初学者,目前正在尝试制作棋盘游戏 LUDO。我以前做过一些 java 编程,在面向对象编程中很常见。所以我现在卡在的事情是绘制“板”的精灵。
我在 MS Paint 中制作了我自己使用的所有精灵,所有不同的精灵(26 个不同的精灵)都具有相同的大小 45px X 45px。我在想的是制作一个包含数字的 2Darray,这些数字将引用纹理数组中的特定精灵。示例:这是我正在设置的板类型的链接:http: //upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Klassisk_ludo-spill.JPG/220px-Klassisk_ludo-spill.JPG
我的 2Darray 设置如下:它从板的顶部开始,然后从左到右。所以这就是我制作 2Darray 的方式:
就像我说的,这些数字应该对应于另一个纹理数组中的特定精灵。以下是什么数字对应什么精灵的概述:
目前我已经在我的后台类中创建了一个内容管理器,如下所示:
这就是我偶然发现我的主要问题的地方。我应该像这样加载内容吗?如果是这样,我应该如何引用 textureArray 中的纹理,以便数字与它们应该在我的 2DArray 中具有的纹理相对应?
我正在考虑制作一个嵌套的 for 循环,将所有精灵放在正确的位置,因为板是 15 X 15 精灵(总共 225 个)。我还应该在我的“public void Draw(SpriteBatch spriteBatch)”方法中使用 foreach 语句吗?
我真的希望有人能给我一些指示,他们将不胜感激!
此致!
rotation - LibGDX - 自行旋转 SpriteBatch
我想在单击按钮时自行旋转这个SpriteBatch
}
xna - 在 XNA 4.0 中同时使用 PrimitiveBatch 和 SpriteBatch
环顾四周,找不到有这个问题的人,也找不到答案,所以我把它贴在这里!
无论如何在使用 2D 相机时在 xna 中同时使用primitiveBatch 和 spriteBatch 吗?有没有办法将在 spriteBatch 上进行的投影应用到primitiveBatch 上?
c# - XNA 中的 Draw() 方法在 for 循环中停止工作
到目前为止,这是我的第一个 XNA 游戏,我在尝试学习它时遇到了很大的困难。我正在关注 Microsoft 的教程,可在此处找到:XNA Xbox Live Indie Games
时不时地,代码会中断。诚然,我已经删除了一些我认为我不需要的部分,并且我创建了两个敌人类别,而不仅仅是一个,但我认为我的调整没有遇到任何重大故障。
在 Game1.cs 主文件的 Draw() 方法中,我必须包含一个 for 循环,该循环将遍历可用敌人的列表并在更新时绘制它们。但是,代码行标记为不正确,我完全不知道为什么。我按照教程进行操作,看起来它应该可以工作,但事实并非如此。这是整个 Draw() 方法:
这是 for 循环中的代码不起作用。任何想法如何解决它和/或任何关于更好教程的建议?
android - 在 Android 上使用 OpenGL ES 2.0 进行 Jerky sprite (2d) 运动
编辑 2. 添加了 logcat 的截图。如果我将精灵的数量减少到 1,我仍然会得到这种间歇性的“停止/启动”——所以我不认为这是我的代码,因为使用 1 个精灵,我的帧速率徘徊在 85-90 fps 左右。我猜这是电话上的东西,logcat 记录了很多东西,所以我假设很多东西在后台运行。有没有办法让我的应用程序在运行时优先于其他服务?
编辑 1. 请参阅问题末尾的编辑详细信息
我创建了一个精灵测试,我在其中渲染了大约 290 个精灵。
1 个精灵的每秒帧数约为 80,而 288 帧仍为 30 左右,问题是精灵时不时停止和启动,这显然不是帧速率,所以有人知道可能是什么原因这个?(要明确的是,它不是减速,而是平稳运动一段时间,然后一切都停止了几分之一秒,然后又恢复平稳)。
这也发生在屏幕上的一个精灵上 - 但只是间歇性地,每 5 秒左右 - 我添加的精灵越多,它发生的越多,但帧速率永远不会低于 30 fps,(我知道这应该没问题平滑运动),所以我只是想了解这可能是什么。
我的精灵是从一个自定义类创建的,但只创建了 3 个实际对象(背景,一个在屏幕上移动的精灵(所以我可以测量平滑度),然后是 288 个精灵(实际上是重复使用的同一个对象) ) 以 6 个为一组进行渲染。
谢谢你的帮助。
硬件是三星 Galaxy Ace 手机。
编辑好的,所以我通过批处理例程进行了更改,现在我每次调用渲染 24 个精灵(14 个调用 = 336 个四边形 + 移动精灵 + 背景 = 338 个四边形)并且大约 47 FPS,所以我想知道可能导致除了 GC 之外,这种“生涩”的运动还是帧率下降太多?
xna - XNA Spritebatch Point Clamp 纹理渲染故障
在 XNA 中,我使用 PointClamp 采样器状态渲染纹理,并且我有一个 tilemap,它使用各种 8 x 8 平铺图像的水平对齐 spritesheet 来渲染每个平铺。我还使用变换矩阵来缩放和移动相机。我的问题是,在比例为 1 时,我的 tilemap sprite 绘制正确,但在更高的比例(2、3 等)下,当我移动相机时,瓷砖图像每隔一段时间就会偏移一个像素。您可以在此屏幕截图中看到我遇到的问题:
此外,出现的小白线不应该在那里,只有当图像像这样绘制偏移时才会出现。有谁知道我怎样才能避免这样绘制瓷砖?
我有一种感觉,白色的“点”来自精灵表中的相邻图块。我可以在 spritesheet 上的平铺图像之间添加一个 1 像素的缓冲区,但我担心当这个问题发生时,这可能会导致平铺之间出现透明线。
c# - SpriteSortMode.Texture,有时绘制顺序错误
在我的 XNA 游戏中,我经常使用 spritesortmode.texture,因为它应该是一种相当便宜的绘图方式。我的问题是大多数时候事情都以正确的方式绘制,但有时事情是错误的(即背景绘制在前景上)这似乎受桌面分辨率的影响,无论是全屏还是第二显示器已插入我的笔记本电脑。
这是我的绘图块的一部分,显示了这些有时会混淆的东西是在哪里绘制的。
这是我加载纹理的地方..(我同时加载它们)
我在一些地方读到 spritesortmode.texture 使用加载纹理的顺序来确定绘制顺序,但从未明确解释过如何使用它来获得正确的顺序。如果有人可以解释这实际上应该如何工作,那就太好了!