使用 glTexSubImage2D 修改纹理的像素 RGBA 值不会更新纹理
Modifying pixel RGBA values of texture using glTexSubImage2D does not update the texture
我有一个 OpenGL 纹理,我想更改 运行 上纹理中像素的 RGBA 值。我想在 CPU 端进行修改。我想创建一个函数来将选定坐标中纹理中的像素更改为选定的 RGBA 值。
我尝试了以下方法:
glTexSubImage2D(GL_TEXTURE_2D,0,x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,data);
其中 x
和 y
是修改像素的坐标,data
是红、绿、蓝和 alpha 的 int 数组。但是我不确定,如果我使用了正确的参数,因为当我使用它时纹理没有改变。我想创建一个函数,使用 glTexSubImage2D
.
将指定坐标中纹理中的像素颜色更改为指定颜色
您必须创建一个 Direct buffer,才能按 glTexSubImage2D
提交数据
我建议创建一个 ByteBuffer
,像这样:
ByteBuffer buffer = ByteBuffer.allocateDirect(data.length);
buffer.put(data);
buffer.flip();
glTexSubImage2D(GL_TEXTURE_2D,0,x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,buffer);
如果data
已经是一个direct buffer,但它是一个IntBuffer
,那么glTexSubImage2D
的第8个参数,它指定了单一颜色通道的数据类型,有成为 GL_UNSIGNED_INT
或 GL_INT
:
glTexSubImage2D(GL_TEXTURE_2D,0,x,y,1,1,GL_RGBA,GL_UNSIGNED_INT,data);
我有一个 OpenGL 纹理,我想更改 运行 上纹理中像素的 RGBA 值。我想在 CPU 端进行修改。我想创建一个函数来将选定坐标中纹理中的像素更改为选定的 RGBA 值。
我尝试了以下方法:
glTexSubImage2D(GL_TEXTURE_2D,0,x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,data);
其中 x
和 y
是修改像素的坐标,data
是红、绿、蓝和 alpha 的 int 数组。但是我不确定,如果我使用了正确的参数,因为当我使用它时纹理没有改变。我想创建一个函数,使用 glTexSubImage2D
.
您必须创建一个 Direct buffer,才能按 glTexSubImage2D
我建议创建一个 ByteBuffer
,像这样:
ByteBuffer buffer = ByteBuffer.allocateDirect(data.length);
buffer.put(data);
buffer.flip();
glTexSubImage2D(GL_TEXTURE_2D,0,x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,buffer);
如果data
已经是一个direct buffer,但它是一个IntBuffer
,那么glTexSubImage2D
的第8个参数,它指定了单一颜色通道的数据类型,有成为 GL_UNSIGNED_INT
或 GL_INT
:
glTexSubImage2D(GL_TEXTURE_2D,0,x,y,1,1,GL_RGBA,GL_UNSIGNED_INT,data);