繁体   English   中英

使用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);

其中xy是修改像素的坐标, data是红色,绿色,蓝色和alpha的整数数组。 但是我不确定是否使用了正确的参数,因为当我使用此参数时纹理不会改变。 我想创建一个函数,使用glTexSubImage2D指定坐标中纹理的像素颜色更改为指定颜色。

您必须创建一个Direct缓冲区 ,才能通过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已经是一个直接的缓冲液,但它是一个IntBuffer ,然后的第八参数glTexSubImage2D ,它指定一个单一的颜色通道的数据类型,必须是GL_UNSIGNED_INTGL_INT

glTexSubImage2D(GL_TEXTURE_2D,0,x,y,1,1,GL_RGBA,GL_UNSIGNED_INT,data);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM