0

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

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

GL.TexSubImage2D(TextureTarget.Texture2D, 0, pixel.X, pixels.Y, 1, 1, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmpData.scan0);

然而,对于修改一个像素这样简单的任务来说,这似乎非常复杂。有没有更简单的方法来做到这一点?

4

1 回答 1

2

有没有更简单的方法来做到这一点?

不,至少,就 OpenGL 而言。

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

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

于 2012-09-05T14:36:20.873 回答