问题标签 [texture2d]

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 投票
1 回答
3516 浏览

c# - 将字节数组转换为texture2D XNA

我有一个代表图像的字节数组。

每个字节表示特定像素的 R、G 或 B 的强度值 (0-255)。因此,对于 640x480 图像,字节数组的大小为 640*480*3(每个像素有 3 个字节代表它)。

字节按像素顺序排列。例如:

等等。

我想知道在 XNA 中将其绘制到屏幕上的最有效方法是什么?

我的想法是做以下事情。

  1. 创建一个新的 Texture2d 对象
  2. 在 draw() 方法中,循环遍历字节数组并设置 Texture2D 对象上的值
  3. 将这个填充的对象绘制到屏幕上。

这是最快的方法吗?如果效率更高,我还可以以不同的顺序/格式存储字节数组。在 draw() 方法期间进行循环有什么缺点吗?在 update() 期间这样做会更好吗?

编辑:

我试图在 Texture2D 上使用 setData() 以便在每次我的字节数组更新(通常是一帧一次)时创建一个新纹理。fps 现在低于 15,而之前为 60。代码如下:

这被称为每个 draw() 循环。

当然必须有一种更有效的方法来做到这一点?

0 投票
1 回答
6216 浏览

android - Android OpenGL ES 2.0 纹理

我一直在尝试进入 OpenGL ES 世界,一切都很好(以下书“OpenGL ES 2.0 编程指南”很棒!)直到现在。我尝试将纹理添加到我绘制的图元中,我成功地使用了以前版本的 OpenGL ES 和 WebGL。

如果我将“纹理”放置在这样的 Java 代码中,我可以完美地绘制纹理:

但是每当我尝试从外部文件加载纹理时,它就会显示为黑色。下面是我用来加载纹理并使用它的代码。

我的活动:

着色器加载器:

文本阅读器:

渲染器:

而且当然

顶点着色器:

片段着色器:

执行该代码的结果是黑屏和我的自定义日志

我也尝试过使用传奇...等待它... dary nehe 纹理但也没有出现

0 投票
1 回答
648 浏览

c# - XNA 中 2d 纹理上的类似 Flash 的发光滤镜

我想知道如何使用 XNA 框架应用类似于我在 Flash 中看到的“发光过滤器”。

这是我要实现的目标的示例:

在此处输入图像描述

这将在 ActionScript 3 中使用以下代码应用:

XNA中是否有类似的东西?

提前致谢。

0 投票
1 回答
1496 浏览

xna - 将 jpg Byte[] 转换为 Texture2D

我需要将 jpeg 图像导入带有相关元数据的 WP7/XNA 应用程序。管理这些图像的程序导出到带有 jpg 文件的编码字节 [] 的 XML 文件。

我编写了一个自定义导入器/处理器,它成功地将重新序列化的对象导入到我的 XNA 项目中。

我的问题是,鉴于 jpg 的字节 [],将其转换回 Texture2D 的最佳方法是什么。

非常感谢您的帮助。:-)

DS

0 投票
1 回答
1440 浏览

c# - C#/XNA - RenderTarget2D.GetData()、RenderTarget2D.SetData():每帧克隆纹理是否有效?

所以,从上一个问题开始,我发现我的解决方案是复制纹理以防止引用问题。但是,我在质疑:

一方面,每秒运行 60 次是否有效?尽管它设置了 1 个纹理,但我对性能很偏执,并且希望将性能保持在其体面或最佳状态。它会导致“主要显着的丢帧”之类的吗?

其次,它会提高性能,而不是创建一个新的颜色数组,我回收一个?

0 投票
1 回答
1793 浏览

c# - XNA:缩小纹理 2D 抗锯齿?

我正在使用 XNA 中的一个项目,我正在使用一些相当大的纹理,我将它们作为 Texture2D 对象加载到游戏中,并且在屏幕上绘制比它们加载的要小得多。原因是我需要在不同的地方以各种不同的尺寸绘制它们,虽然我可以使用多种纹理来做到这一点,但这样做是不切实际的。

我的问题是 XNA 在缩小这些 Texture2D 对象时似乎没有抗锯齿。我已经设定:

并且

但无济于事。我还尝试了各种涉及 GraphicsDevice 中的过滤器的事情,但老实说,我并不真正知道我在做什么。

显然,我使用 spriteBatch 来绘制它,但除此之外,我绘制它的方式并没有什么特别有趣的地方。

这是正在发生的事情的(放大的)示例,以及我正在努力实现的目标:

实际结果 期望的结果

如您所见,XNA 在重新缩放图像时不提供任何抗锯齿功能。有没有办法强迫它这样做,以使边缘看起来更干净?

0 投票
1 回答
4893 浏览

c# - XNA 和从文件中加载图像

我找到了直接从文件加载图像的方法,但是我加载的图像是蓝色的(原始图像是绿色的)。我坚持认为它的保存方式很糟糕,所以我用 Photoshop 保存了它,但没有任何改变。我猜我的程序运行不好。我该如何更改它,这是从文件加载图像的好方法吗?位图到 texture2d 方法:

加载图像行:

绘制纹理方法:

0 投票
1 回答
345 浏览

c# - 更改 Content.Load格式

我们正在 XNA 中开发一些游戏,感谢 Mono+MonoGame+MonoForAndroid,这些游戏将在所有三个主要移动平台上准备就绪。问题是,由于我们需要使用尽可能少的内存来避免设备崩溃,我们选择使用纹理格式 Bgra5551。

不幸的是,当您调用 Load 方法时,内容管理器对纹理 (A8R8G8B8) 使用颜色格式。

我的问题是:我可以使用 Content.Load 以某种方式获得 5551 纹理吗?

我已经有了将 32 位纹理转换为 16 位纹理的代码。我正在考虑一种方法来覆盖 Load 方法,但我没有找到任何东西。

我怎么能 ?

非常感谢您,

——尼古拉·马尔切桑

0 投票
2 回答
390 浏览

c# - XNA - 高度数据到高度图 img

您好,我在内存中有 heightData,有时(当我编辑它时)我想将它保存为 jpg。这是我的代码:

我 100% 确定我在 heightMapColors 中有数据,但保存的 jpg 只有黑色。:/这是一个好方法,还是有什么问题?

0 投票
1 回答
3379 浏览

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用来“着色”纹理,但我们希望它首先能够正常工作。