作为修改GLPaint
的一部分,我试图添加擦除功能,用户可以选择一个橡皮擦按钮并像绘画一样擦除已绘制的区域。
我正在"renderLineFromPoint:(CGPoint)start toPoint:(CGPoint)end"
方法中尝试使用条件语句,以便可以检查笔画是用于绘画还是擦除。
对于擦除,我不知道如何使用“start
”和“end
”参数进行擦除。 OpenGL中是否有像glClear()
这样的方法调用可以接受这两个参数并进行擦除?
任何指针都将非常有帮助。谢谢你。
最佳答案
与Erase using brush in GLPaint一样,您可以重用
- (void)renderLineFromPoint:(CGPoint)start toPoint:(CGPoint)end
方法具有以下条件:
if (isEraserBrushType) {
glBlendFunc(GL_ONE, GL_ZERO);
glColor4f(0, 0, 0, 0.0);
} else {
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
[self setBrushColorWithRed:brushColourRed green:brushColourGreen blue:brushColourBlue];
}
代码上方:
// Render the vertex array
glVertexPointer(2, GL_FLOAT, 0, eraseBuffer);
glDrawArrays(GL_POINTS, 0, vertexCount);
注意,您将需要实现isEraserBrushType,并以某种方式存储brushColourRed,brushColourGreen和brushColourBlue。
关于iphone - 使用GLPaint中的笔刷擦除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4048811/