XNA - HeightData以高度图IMG

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

float multi = 0.2f; float[,] heightData = quadTree.HeightData; Color[] heightMapColors = new Color[heightData.Length]; for (int x = 0; x < heightData.GetLength(0); x++) { for (int y = 0; y < heightData.GetLength(1); y++) { byte colorData = (byte)(heightData[x, y] / multi); heightMapColors[x + y * heightData.GetLength(0)].R = colorData; heightMapColors[x + y * heightData.GetLength(0)].G = colorData; heightMapColors[x + y * heightData.GetLength(0)].B = colorData; } } Texture2D heightMap = new Texture2D(device, heightData.GetLength(0), heightData.GetLength(1), false, SurfaceFormat.Color); heightMap.SetData<Color>(heightMapColors); using (System.IO.Stream stream = System.IO.File.OpenWrite(@"D:\test.jpg")) { heightMap.SaveAsJpeg(stream, heightData.GetLength(0), heightData.GetLength(1)); }

我100%肯定,我在heightMapColors数据,但保存JPG只有黑色。 :/它是一个很好的方式该怎么做或什么是错的?

--------------解决方案-------------

阿尔法不应为零

heightMapColors[x + y * heightData.GetLength(0)].R = colorData;
heightMapColors[x + y * heightData.GetLength(0)].G = colorData;
heightMapColors[x + y * heightData.GetLength(0)].B = colorData;
heightMapColors[x + y * heightData.GetLength(0)].A = 255;

JPG格式可能不是一个高度图保存到,因为它是一种有损格式的良好格式。 你应该把它变成一个BMP PNG公关。 这就是说,你有什么“身高”的范围? 它看起来像你的身高是一个浮动,这意味着它可能不是在正确的范围内进行展示,甚至转化为离散值。

使用255范围内 - 如果你允许的高度范围为XF中YF,将其转换为0

的byteValue =(字节)(((的OldValue - OldMin)*(255 - 0))/(OldMax - OldMin))+ 0

然后给它一个镜头。

分类:C# 时间:2012-01-01 人气:0
本文关键词: XNA,颜色的Texture2D
分享到:

相关文章

  • 类型名称FROMFILE中不类型Microsoft.Xna.Framework.Graphics.Texture2D存在 2013-02-06

    我试图用视觉工作室2010和XNA 4.0这个有据可查的功能,得到错误: 类型名称FROMFILE中不类型Microsoft.Xna.Framework.Graphics.Texture2D存在 有了这个代码: Texture2D tex1 = Texture2D.FromFile(device, "1.bmp"); 知道为什么吗? --------------解决方案------------- Texture2D.FromFile是返回纹理的静态方法. 你new做的C#寻找一个名为类

  • XNA新的Texture2D保留旧数据 2012-07-17

    我有一个奇怪的问题,我相信我的相对缺乏的XNA框架的知识,禁止我脱离固定. 基本上,我有一个设置的Texture2D的新实例一个Texture2D参考. 在运行时它的一些像素的设置而这一切都很好地工作作为其在gameloop绘制. 奇怪的是,如果我设置参考为null,并不如预期画(它只会如果不为空画)吧. 后来,我设置参考到一个新的Texture2D并开始绘制它屏幕. 问题是其持有的原始Texture2D对象的所有数据. 编辑 对不起,我之前明确wasnt. 我拥有的是这样的事情... priv

  • 在XNA颜色单一像素 2013-01-05

    举一个坐标,我怎么能颜色XNA单个像素? 即 Coordinate(10,11).Color = Color.Red --------------解决方案------------- 如果你打算做了很多的像素,这样的事情粒子系统,这将是更好地使用着色器. 您可能会遇到最终只使用一个SpriteBatch性能问题. 有根据什么坐标你的意思是两个方面: 对于屏幕坐标的最简单的方法是有一个Texture2D持有只是一个白色像素,然后绘制它与SpriteBatch并传递任何您想要的颜色的Draw方法. 对

  • 在XNA序列化的Texture2D编程 2012-06-09

    我建立一个XNA游戏,我的建筑,将接受JPEG / PNG和输出有它的Texture2D内容XNB文件中的游戏编辑器. 我有我的自定义序列为我定制等,我都挖成使用反射等,已经进入真正的脏位调用ContentCompiler,我其实可以得到一部分我自己的格式工作. 但我现在需要序列化到正规的Texture2D格式XNA知道如何编译(在Visual Studio中建立项目时)的最常用的方法Content.Load和加载(在游戏中.我不想让我自己的形象此文件格式明显.当我尝试编译一个Texture2D

  • 内存使用在XNA多的Texture2D基于瓦片 2014-12-18

    已经开始写一个简单的瓷砖滚动程序. 我需要每个瓦片有一个具有动画目的几个"帧"纹理. 由于所有的瓷砖将使用相同​​的图像,我关心的内存使用情况. 由于每个瓷砖类使用的Texture2D,这是否意味着每瓦实例将有图像的副本或者是纹理的Texture2D参考回单的质感? 我有42瓦,我不希望有相同的图像的副本42在内存中,这将是一种浪费. 我要的是42瓦引用一个单一的形象作为一个Texture2D. 这是可能的,或者我应该接近这个以不同的方式? --------------解决方案----

  • 转换字节数组成的Texture2D XNA 2013-11-27

    我有一个代表图像的字节数组. 每个字节代表任一R,G或一个特定像素的B的强度值(0-255). 因此,对于一个640×480的图像字节数组的大小为640 * 480 * 3(每个像素代表其3个字节). 该字节在像素排列. 例如: image[0] = the R value of x=0 y=0 image[1] = the G value of x=0 y=0 image[2] = the B value of x=0 y=0 image[3] = the R value of x=1 y=0

  • 裁员在XNA一个Texture2D 2014-04-17

    我想缩小一个Texture2D对象在XNA另一个Texture2D对象. 其原因是使用尺寸减小对象为基础的像素的碰撞检测. 可以这样做? --------------解决方案------------- 你应该看看每个像素的碰撞教程以及变换每个像素的碰撞教程. 从本质上讲,做碰撞检测上的纹理转化(如缩放一个像你想)你使用一个转换矩阵. 这不是太困难和教程给出一个很好的例子. 本教程不结垢,但转动,但评论是包括告诉你在哪里和怎么做缩放以及源研究.

  • 如何绘制使用XNA API的单个像素? 2012-05-25

    如果我想,以填补我的游戏画面与色彩独特的像素,我会怎么做呢? 例如,如果我想写一个"life'型游戏,每个像素是一个单元的比赛,我将如何实现这一目标使用XNA? 我试着只是打电话SetData()一对Texture2D对象使用的屏幕大小的数组Color值,但是它抱怨: 同时积极在GraphicsDevice的设置,您可能不叫的SetData上的资源. 取消设置它可以通过调用SetData的前设备. 我该怎么做,因为它要求? 或者更好的是...有另一种选择,更好的,高效的方式来填补任意像素的屏幕?

  • 通过表达式引擎SDK流XNA输出中的一个活的增强现实供稿 2012-03-23

    我试图写第一视频合并到XNA游戏引擎的应用程序,增加了一些增强现实内容,然后流呈现的内容出来给其他用户. 所有这一切都需要实时或接近实时地发生. 本质上,系统是这样的: 视频 - > XNA(游戏) - >(???) - >表达式引擎 - >直播 - >网络 - >客户端 干净和优雅的方式做,这将是把XNA的渲染输出作为LiveDeviceSource,直接养活到表达式引擎流工作. 是否有可能写出类似这样做定制LiveDeviceSource什么? 基本上没有人知道如何

  • 我的C#XNA游戏玩家级 2013-05-05

    我通常会寻求对XNA论坛帮助,但他们下降的时刻,所以我来到这里. 我想提出一个新的XNA游戏,我想有一个球员类. 目前,我有一个称为主游戏类Dots . 这代表了主要的游戏. 这是我的Player类是布局的时刻: namespace Dots { class Player : Microsoft.Xna.Framework.Game { Texture2D PlayerTexture; Vector2 PlayerPosition; public Player() { Content.RootD

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.545 (s). 10 q(s)