OpenGL / TK修改图像的单个像素

时间:2012-09-05 14:27:26

标签: 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);

然而,对于修改一个像素这样一个简单的任务来说,这看起来非常复杂。有没有更简单的方法呢?

1 个答案:

答案 0 :(得分:2)

  

有更简单的方法吗?

没有。至少,不是就OpenGL而言。

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

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