我正在开发一款iPhone游戏,其中涉及绘图/绘画机制,我在尝试创建一个可以擦除已绘制内容的工具时遇到问题.
主要问题是被绘制的背景不是纯色而是静态图像或动画.我尝试在绘图中使用不同的混合选项和逻辑操作,但似乎没有任何效果.我是OpenGL的新手,所以我必须遗漏一些东西.
有小费吗?
编辑:为了提供更多信息,我正在为我的画笔使用纹理,并使用glVertexPointer()和glDrawArrays()来渲染它们.例如:
glBindTexture(GL_TEXTURE_2D, circleBrush); glVertexPointer(3, GL_FLOAT, 0, verts); glTexCoordPointer(2, GL_FLOAT, 0, coords); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
编辑2:不幸的是,iPhone上没有模板缓冲区.:(
编辑3:iPhone上有Framebuffer对象,这就是我走的路.我还没有完全实现它,但到目前为止它看起来像我想要它的方式.感谢大家!
在场景上绘制全屏纹理四边形.当用户绘制画笔描边时,用于glTexSubImage2D
更新纹理.
glReadPixels/glDrawPixels很慢.
使用FrameBufferObjects甚至更好,但我怀疑这个扩展是否可以在iPhone上使用(然后再次,我不确定,所以也许尝试一下).FBO允许您直接绘制到纹理中,就像它是另一个渲染上下文一样.