问题标签 [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.
shader - Libgdx 改变 sprite-batch 的着色器
我只是想知道是否有任何方法可以更改 sprite-batch 的着色器并编写自定义着色器而不必使用新的网格?
c# - spriteBatch 为 Null
我正在创建一个游戏,目前我有 3 个类,greenpaddle、ball 和 Game1。
当我运行我的游戏时,调试器跳到我spriteBatch.Begin();
并说NullReferenceException Unhandled。这是我的 Game1.cs:
不知道怎么回事,我从来没有遇到过这种情况。
c#-4.0 - SpriteBatch.Draw 矩形
我想做类似泰拉瑞亚物品侧边栏的东西。(左上角矩形之一)。这是我的代码。
变量是
这里是初始化
更新方法
画法
是的,它没有完成,但是当我尝试运行它时,纹理没有出现。我无法找出我的代码有什么问题。
是否与 SpriteBatch 一起使用?在draw方法中?或在更新中?
解决
问题不在于代码本身。问题在于:
问题是,我认为这里的视口(我使用了初学者工具包)是游戏窗口!
java - 使用 LibGDX SpriteBatches 缩放图像
我有我的图像(为了解释起见,我们称之为Image.png
),我试图让它缩放以适合我绘制的身体。身体和一切都与调试一起工作,但我不喜欢它。我正在使用 aSpriteBatch
将背景图像绘制到屏幕上(也可以缩放它)。如何缩放Image.png
到与已渲染的动态主体相同的大小/位置?
编辑: 在绘制图像时,我无法让它们与调试渲染体相匹配。
创建正文:
绘图图像:
编辑#2: 事实证明,如果您的相机小于屏幕尺寸,则必须进行一些补偿以解决位置变化。问题已解决,谢谢!
c# - 使用源矩形的摆动纹理
我在尝试在 XNA 中绘制的 texture2d 时遇到了一些问题。基本上,我有一个加电“冷却填充效果”。随着冷却时间的减少,我尝试部分绘制纹理。因此,例如,在完成 10% 的冷却时间时,我只绘制纹理(底部)的 10% 冷却时间,20% 完成仅纹理底部的 20% 的冷却时间,依此类推。
我遇到的问题是,在绘制纹理时,它会在填充时不断摆动。
请注意,下面ActiveSkillTexture
是我预加载的填充纹理。它的大小是完全填充图形的大小。
InterfaceDrawer.Draw
是一个调用的方法SpriteBatch.Draw
,但事先做了一些额外的事情。出于所有意图和目的,它与SpriteBatch.Draw
.
Scale
是我的比例因子,它只是一个介于 0 和 1 之间的浮点数。
MyDest
是这个纹理应该绘制的预先计算的位置(从左上角开始,像往常一样)。
这是一段代码:
我知道你看不到它,但它基本上是在摇晃并在填充时完成。我尝试打印出目的地、新边界矩形等的值,它们似乎都在持续增加而不是“摇摆”,所以我不确定发生了什么。有趣的是,如果我从顶部填充它,它就不会发生。但这可能是因为我每次绘制它时不必做数学来改变目标位置(因为它应该每次都从左上角绘制)。
任何帮助将不胜感激。谢谢!
opengl - Sprite Batching:高级技术
我正在制作基于 OpenGL2 的应用程序,它在每次迭代中呈现超过 200 个精灵。我想使用更少的绘制调用,因为我经常渲染具有相同纹理的多个精灵。不幸的是,由于 Z 排序,常规批处理技术对我不利。所有元素的绘制顺序很重要,所以我不能将它们分组并按组绘制。
我想知道,在这种情况下是否可以使用另一种批处理技术。例如,我可以修改着色器以同时处理多个纹理(虽然听起来像是一个糟糕的决定)。分享你的知识。
UPD 09.10.13:我还认为,由于材料数量显着减少,atlas 纹理将减少绘制调用。
c# - Is it possible to write new SpriteBatch.Begin function?
I am creating a game with an isometric view. I have a structure which is currently working quite effectively, using two matrices. This requires additional members and functions that I would like to do without, though. One of the SpriteBatch.Begin
functions accepts a transformation matrix as a parameter. I would like to write a new SpriteBatch.Begin
function to accept two matrices (one for camera transformation, and one for isometric transformation). I don't know how the actual SpriteBatch.Begin
function works, and I don't know if there is any source available. Does anyone have an idea?
c# - 使用带有 SpriteBatch 的静态 Texture2D 会提高性能吗?
我的游戏中会有很多(外观相同)的僵尸。
使纹理静态化是个好主意,这样就SpriteBatch
不需要加载新的纹理了吗?
我遍历整个僵尸列表并用相同的调用绘制每个僵尸,只是改变了位置。会SpriteBatch
得到吗?每次都完全一样的质地吗?劣势可能在哪里?
c# - XNA 4.0 在一批中使用多种效果
我正在为 XNA 4.0 开发图形引擎,但遇到了一个我找不到任何解决方案的问题。目前我正在尝试通过使用着色器来实现灯光效果。图形引擎还包含一个粒子引擎,因此至少考虑性能对我来说非常重要。这两件事的结合产生了问题。
首先,我已经做了很多阅读和研究,据我所知,你做的绘制调用越少,性能越好。通过绘制调用,我的意思是当 spritebatch 将实际几何体和纹理发送到 GPU 时。因此,我试图在一个批次中尽可能多地绘制。
现在问题来了。我的引擎绘图方法有 2 个重载:
第一个重载只是要使用默认着色器绘制普通纹理。第二个重载将绘制使用另一个着色器的灯光。我想做的是:
但是,SpriteBatch 一次不支持多个着色器,因此我尝试使用效果通道来执行此操作:
这也不起作用,因为调用 spriteBatch.Draw() 时不使用着色器,而是调用 spriteBatch.End() 时使用着色器。因此,上面的代码使用我最后应用的 pass 渲染了所有内容。
我的第三次尝试是使用 2 个 SpriteBatches:
这确实有效,但是我的图层深度完全搞砸了,这并不奇怪,因为 spriteBatchLight.End() 是最后调用的,所以它总是会绘制在 spriteBatchColor 绘制的所有内容之上。
我知道我可以将 SpriteSortMode 设置为 SpriteSortMode.Immediate,但是我会受到很大的性能损失,因为该模式会直接绘制所有内容。由于在这种情况下性能非常重要,因此我想通过尽可能少地对 GPU 进行绘制调用来进行优化,SpriteSortMode.Immediate 对我来说不是一个选项。
所以,我的问题是:
有什么方法可以在一批中使用 2 种不同的效果/技术/通道?或者有什么方法可以让我使用 2 个不同的 SpriteBatches,然后在我进行最终绘制时将它们组合起来,这样图层深度就不会被弄乱?
libgdx - LibGDX Sprite Batching 并在运行时添加新的 sprite
我是一名使用 libgdx 引擎的新程序员,并且想知道精灵批处理的行为。特别是如何在程序生命周期中将精灵添加到批处理中以进行绘制。到目前为止,精灵的所有示例都使用了一些类似于:
batch.begin();
sprite.draw(batch);
batch.end();
等的代码,我不清楚我将如何绘制不同数量的精灵,因为每个精灵 .draw 必须在批处理中调用......提前谢谢你解释!