Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#XNA将表示双色图像的2D布尔数组的给定部分渲染到窗口_C#_Arrays_Xna_Rendering_Boolean - Fatal编程技术网

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?
}