Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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# 我可以改变屏幕上像素的颜色吗?_C#_Xna - Fatal编程技术网

C# 我可以改变屏幕上像素的颜色吗?

C# 我可以改变屏幕上像素的颜色吗?,c#,xna,C#,Xna,我有一个画图程序,我想在你点击时改变一个特定的像素。我该怎么做 我知道我可以创建背景图像的颜色[],但我需要它在屏幕更改时快速更新对于C#/XNA,您可以在CPU内存中创建动态纹理缓冲区和位图图像,每当进行更改时,您都可以将其复制到GPU动态缓冲区。。。bitmap类具有处理像素的方法,因此您真正需要解决的唯一部分是如何映射GPU内存并将位图复制到纹理缓冲区。这个复制操作相当快。。我们使用类似的技术让我们的HTML HUD显示在游戏引擎中(不幸的是,不是基于XNA的),即使每帧都有更新,我们仍然

我有一个画图程序,我想在你点击时改变一个特定的像素。我该怎么做


我知道我可以创建背景图像的颜色[],但我需要它在屏幕更改时快速更新

对于C#/XNA,您可以在CPU内存中创建动态纹理缓冲区和位图图像,每当进行更改时,您都可以将其复制到GPU动态缓冲区。。。bitmap类具有处理像素的方法,因此您真正需要解决的唯一部分是如何映射GPU内存并将位图复制到纹理缓冲区。这个复制操作相当快。。我们使用类似的技术让我们的HTML HUD显示在游戏引擎中(不幸的是,不是基于XNA的),即使每帧都有更新,我们仍然超过了60帧。

有趣的是,我们投了反对票,没有对原因发表评论。。嗯,我猜是因为选民认为你的答案太抽象了;使用非XNA术语;没有任何实际代码。它也有一个非XNA血统也没有帮助。最后,由
CPU
更新一个合理大小的缓冲区,只发送到GPU
每一帧
是低效的。StackOverflow不是用来请求代码的。它是用来回答问题的。差不多没什么。如果答案包括代码,可能是因为拥有代码是有意义的,但这不是一个要求。长话短说,OP的要求不能只用XNA技术来完成,而@Ascendion所说的是他将要得到的最接近的。我当然包括了足够多的关键术语,OP可以通过谷歌搜索实现我所描述的示例。。。至于缓冲区更新率,我描述了什么是可能的,像素编辑应用程序的更新频率可能会比这少得多,除非用户使用画笔绘制,在这种情况下,每帧更新是非常可能的。它可能效率不高,但实际上没有太多替代方法将CPU上的动态位图放入GPU上的纹理缓冲区。我注意到我的HUD代码的非XNA血统,因为我已经多年没有使用XNA了。。。但我正在使用DirectX,这是相同的底层技术,我知道XNA在某种程度上支持动态纹理更新。我需要更多地了解您的程序目前正在做什么。