Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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# OpenGL/TK修改更改图像的单个像素_C#_Opengl_Textures_Opentk - Fatal编程技术网

C# OpenGL/TK修改更改图像的单个像素

C# OpenGL/TK修改更改图像的单个像素,c#,opengl,textures,opentk,C#,Opengl,Textures,Opentk,我想更改绑定纹理的单个像素 我知道我可以有一个1x1位图,然后获取该位图的位图数据,然后传入: GL.TexSubImage2D(TextureTarget.Texture2D, 0, pixel.X, pixels.Y, 1, 1, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmpData.scan0); 然而,对于如此简单的修改一个像素的任务来说,这似乎复杂得可笑。有没有更简单的方法 有没有更简单的方法

我想更改绑定纹理的单个像素

我知道我可以有一个1x1位图,然后获取该位图的位图数据,然后传入:

GL.TexSubImage2D(TextureTarget.Texture2D, 0, pixel.X, pixels.Y, 1, 1, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmpData.scan0);
然而,对于如此简单的修改一个像素的任务来说,这似乎复杂得可笑。有没有更简单的方法

有没有更简单的方法

不。至少,就OpenGL而言不是这样

一般来说,人们不想改变一个texel。如果他们正在上传,那是因为他们想更新整个纹理数据区域。CPU->GPU DMA操作就是围绕这一事实设计的


至于OpenTK部分(创建位图、锁定等),您不必创建位图。您可以使用其中一个来传递C#数组。

好的,很酷,谢谢。我完全忽略了一个事实,那就是我可以通过数组,这应该会让事情变得更简单。哦,等等,有一个问题,我试图使一个像素红色失败了。像素变得透明。GL.TexSubImage2D(TextureTarget.Texture2D,0,X,Y,1,1,OpenTK.Graphics.OpenGL.PixelFormat.Rgba,PixelType.UnsignedInt,新uint[]{0xFFFF0000})@那听起来是个有趣的问题。也许你应该点击“提问”按钮来提问。评论是评论,不是提问。