【问题标题】:How can I get and set pixel data in XNA?如何在 XNA 中获取和设置像素数据?
【发布时间】:2010-02-16 19:49:00
【问题描述】:

我有一个纹理 2D,我想在其中获取指定像素的颜色。用它做点什么,然后在另一个纹理 2D 中添加一种新颜色。

我需要对纹理中的所有像素执行此操作。我该怎么做。

请不要使用像素着色器。它需要在 C# 中

【问题讨论】:

  • 这不是像素着色器的用途吗?你为什么不想要一个?
  • 你的纹理有多大?将数据设置到纹理上并不算太糟糕,但从纹理中获取数据可能会非常慢......
  • 我正在尝试制作二维水动画。去这里:freespace.virgin.net/hugo.elias/graphics/x_water.htm。纹理不是很大。我认为它们是 400 x 300。我会继续试验,看看我能把它们做成多大。

标签: c# xna get set pixel


【解决方案1】:

Texture2D 类包含 GetDataSetData 方法,它们应该完全符合您的要求。

【讨论】:

  • 虽然这可以解决问题,但取决于你在做什么,这可能会非常非常慢。
  • 我链接到的 MSDN 文档中有示例。
  • @dotTutorials:GetData 重载有示例。 SetData 在 2011 年发表评论时有样本。我对 MSDN 没有任何控制权。
  • 这就是为什么您不仅应该通过链接回答还应该给出更多解释;)
【解决方案2】:

我发现了我的问题。

当我试图获取像素的颜色时,颜色的 Alpha 值为 0。这意味着颜色将是完全透明的。为了解决这个问题,我只需要将 Alpha 值更改为 255。

我认为这是因为我使用的是 jpg 文件。 JPG 文件不支持 Alpha 值。

【讨论】:

    猜你喜欢
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 2014-02-26
    相关资源
    最近更新 更多