作为修改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/

10-09 01:39