当前位置:  开发笔记 > IOS > 正文

OpenGL:如何实现"橡皮擦"工具?

如何解决《OpenGL:如何实现"橡皮擦"工具?》经验,为你挑选了1个好方法。

我正在开发一款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对象,这就是我走的路.我还没有完全实现它,但到目前为止它看起来像我想要它的方式.感谢大家!



1> joeld..:

在场景上绘制全屏纹理四边形.当用户绘制画笔描边时,用于glTexSubImage2D更新纹理.

glReadPixels/glDrawPixels很慢.

使用FrameBufferObjects甚至更好,但我怀疑这个扩展是否可以在iPhone上使用(然后再次,我不确定,所以也许尝试一下).FBO允许您直接绘制到纹理中,就像它是另一个渲染上下文一样.


你有其中任何一个的代码示例吗?非常感谢
推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有