问题标签 [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# - SpriteBatch:“在成功调用 End 之前,无法再次调用 Begin。”
所以我启动了我当前的项目,我做的第一件事就是运行它,它给了我上面的异常。昨晚运行良好。这是我的 Draw 事件中的所有代码。spriteBatch.Begin 不会出现在项目的其他任何地方。在此处删除 Begin 会导致 spriteBatch.Draw 引发异常,将 spriteBatch.End 放在 begin 之前也会引发异常。我不知道出了什么问题以及如何解决这个问题。
xna - SpriteBatch 未绘制到屏幕上
当游戏重置但 spritebatch 未绘制时,我正在尝试将快速加载精灵绘制到屏幕上。我在game.spritebatch.begin() 上放了一个断点;当我跨步时,什么都没有画出来。有任何想法吗?
这是我的重置功能
c# - XNA (3.1) DrawUserPrimitives 和 SpriteBatch alpha 问题
我正在使用 XNA 3.1 制作一些东西,并且正在尝试使用 DrawUserPrimitives 创建 2D Ribbon 轨迹。我的算法只是在每一帧添加新的顶点(假设发生了一些运动),并且还遍历顶点并将它们淡出,删除不需要的顶点。这工作得很好,除了我使用 SpriteBatch 来处理许多其他图形。现在,我将整个屏幕绘制到 RenderTarget2D(出于各种原因,我无法避免),并且遇到了这个奇怪的 alpha 问题。
我遇到的问题如下所示:
这应该是一条随着它消失的白色痕迹。显然这不会发生。相反,它正在褪色为图形设备的清晰颜色。绘制这条轨迹时,我暂停 SpriteBatch(通过调用 End(),然后在绘制完成后调用 Begin()),这样我就可以得到正确的深度。我用来绘制图元的效果只是一个没有什么特别之处的 BasicEffect,初始化 SpriteBatch 的代码在这里:
初始化 SpriteBatch 后的设置可确保 RenderTarget 纹理中半透明的正确着色。我的猜测是这里的某些东西导致了这个问题,但我不确定是什么。如果有人可以帮助我,我将不胜感激。
干杯。
c# - XNA 屏幕截图显示的是预渲染,而不是最终渲染
我有一个使用 Reach 图形设置用 C# XNA 4.0 编码的 Windows 平台游戏。我的项目基于 GameStateManagement 示例,但后来我添加了 Bloom 和 spriteSheet/spriteBatch 功能。
我希望保存最终屏幕输出的屏幕截图。但是,当我保存我的屏幕截图时,它只显示了在应用 Bloom 之前和显示我的 HUD 文本之前的渲染(我在 Bloom 之后绘制)。在这两个过程之后,我在 Draw 方法结束时保存了我的屏幕截图。
我尝试过各种各样的事情。安德鲁在这里的回答Take screen shot in XNA很有帮助,并且确实保存了图像;但是,它并没有保存最终渲染。
我觉得它与绽放过程或精灵批次有关。
这是我的代码:
}
c# - XNA 4.0 SpriteBatch.Draw 抛出内存异常
好吧,首先,我的猜测是我spritebatch.draw()
多次调用该方法,但我需要(或者,这是我能弄清楚如何)绘制我的游戏窗口。我会继续转储我的代码。
我的窗口类;
我的 Draw() 方法;
这一切都很好,并针对我的小窗皮纹理等进行了配置。唯一的问题是它会有点滞后,然后在运行它大约一分钟后完全崩溃。它抛出一个Out Of Memory Exception
,但我不知道也找不到与 spritebatch 相关的任何其他主题或帖子。有人对我如何使这项工作不占用太多内存有任何建议吗?我认为这是一种简单、经济有效的绘制窗口的方法。我只是不确定如何减少我的绘图调用,或者恢复任何记忆。
c# - 循环滚动纹理
我正在使用 C# 和 XNA,我想在我的游戏中制作滚动背景。
我试图找出实现无限期向某个方向移动的滚动纹理的最佳方法。假设有星星的空间背景。因此,当船舶移动时,纹理会发生变化,但方向相反。有点像“平铺”模式。
到目前为止,我唯一的猜测是渲染两个纹理,比如说向左移动,然后当它超出可见性或类似的东西时,让最左边的一个跳到右边。
所以,我想知道在 XNA 中是否有一些简单的方法可以做到这一点,也许是某种渲染模式,或者我描述的方式是否足够好?我只是不想把事情复杂化。我显然先尝试了谷歌,但几乎一无所获,但考虑到许多游戏也使用类似的技术,这很奇怪。
c# - 将 SpriteBatch.Draw 中指定的颜色与自定义着色器一起使用
通常,当您这样做时,SpriteBatch.Draw
您可以指定颜色。但这就是问题所在。如果我使用自定义着色器,它们会忽略通过SpriteBatch.Draw
...
我如何考虑到这一点?我的意思是如何准确SpriteBatch.Draw
传递颜色?如果我知道它,我可以在我的着色器中使用它。
到目前为止我所拥有的(相关部分):
c# - XNA C# 拉绳奇怪的盒子
图片: http: //i.imgur.com/dJseH.png
我已经和 XNA 合作了一段时间,这是第一次出现这种情况黑色
文本应该是“兽人”,紫色是“1 / 100”就像经验一样
但是这似乎不起作用,似乎文字和背景色是相同的。
这是拉绳代码:
基本字体:
我想这可能是因为 HUD 图像有点透明,所以我在背景上画了一些具有相同效果的字符串。
我制作了一种新字体,同样的事情发生了。
sprite - OpenGL 3.2 Core Sprite Batch Example?
I have been tearing my hair out for a while over this. I need an OpenGL 3.2 Core (no deprecated stuff!) way to efficiently render many sprites, using batching (no instancing).
I've seen examples that do this with geometry alone, but mine also needs to send textures to it, I don't know how to do this.
I need a well done example of it working in action. And looking at how other libs like monogame and such do it isn't much help, because all I'm interested in is the GL code, and it has to have no deprecated stuff in it.
Basically I want to be able to efficiently render thousands+ of sprites, all having textures. The texture is just a spritesheet, so I just need to tell it to render a region of that spritesheet.
I'm disappointed in the amount of material available for programmable pipeline. To the point where it seems like it'd be so much easier to just say screw it and use fixed pipeline, even though I definitely don't want to do that.
So yeah, any full examples that do what I want? Or could somebody more knowledgable write one up? :)
A lot of the examples are "oh, here's how you render 1 triangle". Well that's great, except nobody needs to render only 1 triangle/quad. And they need to be textured in addition to that!
An example that uses VBOs/VAOs/EBOs
ALSO: this means the code can't use glTexPointer and that stuff, but just in raw VBOs/VAOs...
xna - 在屏幕 XNA 上多次绘制一个类
我正在制作一个简单的破砖游戏。我有一个球桨类,我都可以在屏幕上移动。我也有一个砖类,一个砖,当它被球击中时它消失了。现在我想要屏幕上的多个砖块,而无需通过编写手动绘制它们
spriteBatch.Draw(brickTexture,brickPosition,Color.White);
一遍又一遍。(位置不同)。我如何多次绘制课程并且每块砖都能够在被击中时消失。