
[英](LWJGL3) OpenGL 2D Texture Array stays empty after uploading image data with glTexSubImage3D
[英]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的整数数组。 但是我不确定是否使用了正确的参数,因为当我使用此参数时纹理不会改变。 我想创建一个函数,使用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_INT
或GL_INT
:
glTexSubImage2D(GL_TEXTURE_2D,0,x,y,1,1,GL_RGBA,GL_UNSIGNED_INT,data);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.