我正在编写一个绘图应用程序,绘图画布是一个 OpenGL 纹理。当您在画布上绘图时,它会确定画布纹理的哪个区域已更改,并在应用您所做的更改之前复制该像素数据(使用 glReadPixels)。
要撤消,我想使用复制出来的像素数据简单地恢复到以前的纹理状态。但是,OpenGL ES 不提供 glDrawPixels 命令。最好的方法是什么?
我考虑了两种选择,但我不确定是否有那么好:
使用我复制出来的像素创建一个临时纹理并将其绘制进去。(但是,复制的区域不是 2 的幂!)
完全解绑大画布纹理,手动修改纹理字节,然后放回OpenGL。我没有使用任何形式的压缩,所以这可能不是那么糟糕。但这似乎是一个黑客?
有人有什么想法吗?我真的很感激!