问题标签 [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# - 什么是平铺纹理的更经济的方法?
我正在开发一个基于瓷砖的 2d 游戏。我将事物拆分为诸如天空背景、陆地背景、城镇、UI 等组件,每个组件都处理其绘图。在调用任何绘图调用之前,我spritebatch.Begin()
使用默认值,以便我在 1 批次中绘制所有内容。
为了绘制土地质量,我在该区域反复绘制方形土地纹理,直到将其填满。然而,有一种spriteBatch
叫做的模式就是linear wrap
这样做的。不利的一面是,我将不得不通过将我的一个全局spritebatch.begin()
多次拆分为每个组件来更改我的设计。
所以我的问题是什么更好/更经济,手动平铺纹理或拆分子组件之间的begin()
和end()
?
还有其他问题可能需要我拆分一个spriteBatch.Begin()
,那么额外的 1 个有多重要spriteBatch.Begin()
?还是10多个?还是100多个?我想知道我应该以什么规模开始担心添加更多begins()
.
java - libgdx:SpriteBatch 未使用 PerspectiveCamera 显示
虽然我确实具备 OpenGL 的基本知识,但我只是从 libgdx 开始。
我的问题是:为什么,具有完全相同的代码但仅从 OrthographicCamera 切换到 PerspectiveCamera 的效果不再显示我的任何 SpriteBatches ?
这是我使用的代码:
创建()方法:
和 render() 方法:
现在,如果在我的 resize(int width, int height) 方法中,我像这样设置相机:
我明白了:
但是,如果我更改相机类型:
我明白了:
我问的原因是因为我真的很喜欢 libgdx 内置的在 OpenGL 中绘制文本(字体)的能力。但是在他们的示例中,他们使用了 SpriteBatch,他们将其路径到 Font 实例,并且他们也总是使用 Ortho Camera。我想知道 SpriteBatch 和字体绘图功能是否适用于 PerspectiveCamera。
c# - Viewport.Project 问题
在我的 XNA 游戏中,我使用 Viewport.Project 来获取太阳 3D 坐标的 2d 屏幕坐标(主要是因为它看起来不错)。我得到了这个工作,但是,当我朝太阳的相反方向看时,我看到了其中的两个(从技术上讲,一个)。我不知道这里发生了什么..
有谁知道发生了什么?我怎样才能防止这种情况发生?
为了帮助可视化这一点,这是我正在谈论的图像: 超链接图像,没有 10+ 代表
这是代码:
c# - XNA - 剔除性能问题
这种绘制我的瓷砖的方法似乎很慢,我不确定到底出了什么问题,它相信我的剔除方法不起作用并且在屏幕外绘制东西,但我不完全确定。这里是:
GetTileSetTypes 是一个函数,用于获取它周围的瓦片,用于不同的纹理,如 DirtBlock_North、DirtBlock_Center 等。
平铺内容只是我的块纹理的一个类。
c# - Spritebatch 设置导致向后剔除或其他任何东西的东西
对于我编写的 cel 着色器,边缘检测仅适用于 2D 纹理/渲染目标。因此,我调整了渲染方法,以便将纹理绘制到渲染目标,渲染目标设置为纹理并使用 SpriteBatch 绘制。
除了,SpriteBatch(似乎?)忽略了我的设置:
显然会正确绘制对象。然而,事实并非如此。
c# - XNA BlendState 与 SpriteBatch
我们需要一个 BlendState 来执行以下操作:
- 透明PNG按预期绘制,保留其后面的任何内容
- 我们用来
Color.White
按原样绘制PNG - 我们将改变颜色的 alpha 通道来改变纹理的“不透明度”
为了获得这种效果,BlendState.AlphaBlend
如果我们将 alpha 设置为 100 或 255 以外的任何数字,则它很接近,但会绘制白色作为透明部分。
所以我们尝试了这个:
这行得通,但如果两个 PNG 相互重叠,我们现在会得到不希望的效果。基本上我们会得到一些奇怪的线条,看起来像是在添加像素数据(或其他东西)。
例子:
实际上,BlendState.AlphaBlend
是这样的:
图像看起来比上面更好:
但是随后 alpha 不起作用,使用 100 作为 alpha 将用白色替换背景。
我们BlendState
应该使用什么来从 SpriteBatch 中获得我们想要的效果?我们可以使用不同的颜色,例如Color.Black
有另一种方法可以让它工作。
*PS - 另一个不错的功能是如果我们可以Color.Red
用来“着色”纹理,但我们希望它首先能够正常工作。
xna - 为什么 Vector2(来自 XNA 的库)使用 float 而不是 int?
为什么Vector2(来自 XNA 的库)使用float而不是int?
计算机屏幕上的位置以像素为单位,因此光标位置可以由两个整数定义。没有半个像素这样的东西。那我们为什么要使用浮点数呢?
在SpriteBatch类中,我发现了 7 个称为Draw的重载方法。他们两个人:
所以我们可以看到Draw接受int和float坐标。
我在实现游戏对象的屏幕坐标时遇到了这个问题。我认为Rectangle是保存对象大小和屏幕坐标的不错选择。但现在我不确定...
c# - RenderTarget2D 将所有 alpha 紫色着色
所以,我正在尝试将我的游戏玩法渲染到 XNA 中的 RenderTarget2D,这样我就可以将着色器应用到场景中。它在某种程度上是有效的,但任何以 255 以外的 alpha 级别绘制的东西似乎都被染成了紫色。alpha 效果有效,但也有紫色色调。我试图四处寻找解决方案,我似乎唯一能找到的要么是全屏呈现紫色,要么是 alpha 被紫色替换。
我的问题不完全是那些......
这是我抛出的一个场景,向你展示发生了什么。如您所见,alpha 效果正在工作,但对象被染成紫色。
这是我发布渲染代码的部分:
这是我正在使用的初始化。
renderEffect 是效果文件,Sprite 是处理相对于假定屏幕尺寸的绘图(以应对不同的分辨率)的类。
我在 XNA 3.1 中工作。我知道我现在应该使用 4.0,但我不是因为我有 3.1 的书,这在某些情况下很有帮助。
无论如何,这里的一些帮助将不胜感激......
c# - XNA 通过 SpriteBatch 和 Content 作为参考
最近我开始将 XNA 与 MonoMac 一起使用。我上课有问题。我想创建一个里面有纹理和位置信息的类。我也想做绘图功能。
我的想法是传递 spriteBatch 和 Content arround,这样我就可以加载纹理并在之后绘制它们。然而,我传递给这个对象的内容对象不加载任何纹理,当我在类之外尝试内容时,它加载的纹理很好,所以纹理必须在那里。
这就是我创建实例的方式:
也许我试图使用错误的模型。也许我不应该在类中使用 spritebatch 和 Content,但是我可以让 spritebatch 和 content 全局化吗?
感谢您的帮助
android - LibGDX SpriteBatch 多纹理可能吗?
我很高兴使用 LibGDX 框架的 SpriteBatch 类。我的目标是通过着色器修改精灵的表示。
我从 SpriteBatch 类中复制了默认着色器并添加了另一个统一的 Sampler 2d
有没有一种工作方法可以将纹理赋予着色器。这样做,总是以 ClearColor 屏幕结束。
每个纹理单独工作。在 Mesh Class 的帮助下手动绘制可以按预期工作。那么我该怎么做才能使用 SpriteBatch 的便利性呢?
寻求帮助