我是 OpenGL 的新手,只需要知道是否有一种快速的方法可以将渲染/图片/视图原样保存,将其全部重绘为未填充的行(基本上使所有内容都透明),然后在用户之后高兴,转到保存的渲染并重新显示它。
我必须回去尝试重绘所有内容吗,不是 OpenGL 设置,这样我就可以保存当前绘制/显示的任何内容,复制它,更改它(用 GL_LINES 而不是 GL_FILL 重绘它),显示它,让用户做任何他们想做的事,当用户完成后将其恢复为原始保存的副本?
我是 OpenGL 的新手,只需要知道是否有一种快速的方法可以将渲染/图片/视图原样保存,将其全部重绘为未填充的行(基本上使所有内容都透明),然后在用户之后高兴,转到保存的渲染并重新显示它。
我必须回去尝试重绘所有内容吗,不是 OpenGL 设置,这样我就可以保存当前绘制/显示的任何内容,复制它,更改它(用 GL_LINES 而不是 GL_FILL 重绘它),显示它,让用户做任何他们想做的事,当用户完成后将其恢复为原始保存的副本?
这不是 OpenGL 的工作方式,因为 OpenGL 不是场景管理库。OpenGL 所做的只是在屏幕上绘制简单的图元(如点、线或三角形)。一旦它绘制了一些东西(将它从一堆三角形或线条转换为帧缓冲区中的一堆像素),它就会完全忘记它。因此,您不能告诉 OpenGL 使用另一种渲染样式(在您的情况下为多边形模式)神奇地重绘您最近绘制的场景(无论如何,在这种情况下“最近”是什么?)。
您当然可以通过将当前渲染(帧缓冲区的当前内容)复制到纹理中(或使用 FBO 直接将其重新渲染到纹理中)来保存当前渲染(帧缓冲区的当前内容),然后只需将此纹理绘制到屏幕上即可恢复它。但是每个更高级别的场景管理完全是您的责任,如果您想使用不同的多边形模式重绘场景,那么您别无选择,只能自己重绘整个场景。