c#XNA将表示双色图像的2D布尔数组的给定部分渲染到窗口
首先,我关于这个数组将占用多少空间的逻辑是否正确c#XNA将表示双色图像的2D布尔数组的给定部分渲染到窗口,c#,arrays,xna,rendering,boolean,C#,Arrays,Xna,Rendering,Boolean,首先,我关于这个数组将占用多少空间的逻辑是否正确 bool[,] b = new bool[8192 /* 8 * 1024 = 1KB */, 20]; // 20KB 我希望将2D数组的给定部分渲染到窗口。该数组由布尔组成,表示一个2色图像。图像应该占据整个窗口,每个像素应该是锐利的\像素化的,而不是像素中心之间存在插值\梯度 例如(ofc将有更多的封装): c#\XNA中是否有任何内置功能可以有效地执行此操作?您可以创建一个新的Texture2D,然后将SetData函数用于颜色数组。我
bool[,] b = new bool[8192 /* 8 * 1024 = 1KB */, 20]; // 20KB
我希望将2D数组的给定部分渲染到窗口。该数组由布尔组成,表示一个2色图像。图像应该占据整个窗口,每个像素应该是锐利的\像素化的,而不是像素中心之间存在插值\梯度
例如(ofc将有更多的封装):
c#\XNA中是否有任何内置功能可以有效地执行此操作?您可以创建一个新的Texture2D,然后将SetData函数用于颜色数组。我还没有测试过它,但它应该可以工作。您可以做与此相反的事情:
你要做的唯一一件事就是检查哪种颜色会进入你的纹理,看它是真是假。true。这不是最快的解决方案。您也可以将数据存储在中,并将其用作数据源,而不是bools。所有解决方案是否都涉及为每个值存储int32?可能是的,
SurfaceFormat.Single
似乎是最便宜的。你总是可以考虑在每一帧建立纹理。
draw(bool[,] b,
float top_left_x, float top_left_y, float width, float height,
float false_red, float false_green, float false_blue,
float true_red, float true_green, float true_blue)
{
// what goes here?
}