c++ - 在 OpenGL 中删除部分绘图

标签 c++ opengl drawing erase

我想知道是否可以在 OpenGL 中删除任何绘图的部分内容?假设我用鼠标画了两条线,这些线在某些点重叠。

是否可以只删除一行?有没有更简单的方法?

最佳答案

OpenGL 不存储您绘制的内容。如果您在 OpenGL 中画一条线,那么 OpenGL 将采用该线,对其执行各种数学运算,并将像素写入形成线形的帧缓冲区。 OpenGL 不记得你画了一条线; OpenGL 所能做的就是将像素写入帧缓冲区。

一般的想法是,由 OpenGL 的用户记住他们画的是什么。所以如果你画两条线,你应该记住你给这两条线的坐标。因此,如果您想“删除”一行,您要做的就是清除屏幕并重新绘制除该行之外的所有内容。

这并不像听起来那么愚蠢。许多 OpenGL 应用程序不断重绘屏幕。他们显示一个框架,绘制一个新框架,然后显示该框架,等等。这为动画提供了可能性:改变绘制的内容和在不同框架中绘制的位置。这会产生运动的错觉。

关于c++ - 在 OpenGL 中删除部分绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6369380/

相关文章:

c++ - 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

ios - 如何在饼图上为标签找到合适的位置?

opengl - gl_NormalMatrix

opengl - 如何在 OpenGL 中将图元渲染为线框?

ios - 如何使用 Core Text 向后布局文本?

c# - 如何在 OnRender 中重绘或刷新?

c++ - 在 C++ 中删除对象

java - 如何在 JNA 中使用 GetProcAddress?

c++ - 从 C 库调用 C++ 函数指针

opengl - 使用多个 openGL VBO 绘制多个模型