Вам необходимо создать Прямой буфер , чтобы зафиксировать данные с помощью 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);