如何在OpenGL(简单矩形区域)中剪辑渲染? 请发布一个C ++示例。
答案 0 :(得分:7)
您可能需要的是OpenGL的scissor机制。
剪裁由x
,y
,width
和height
参数定义的不属于矩形的像素的渲染。< / p>
另请注意,启用此OpenGL状态会通过限制清除区域来影响glClear
命令。
答案 1 :(得分:2)
如果您只想显示特定的矩形,则需要glFrustrum
或glOrtho
以及glViewPort
的组合。它实际上是glViewPort
设置剪切矩形。 glFrustrum
,glOrtho
(gluPerspective
等)然后将一组真实坐标映射到该矩形。通常你几乎没有注意到glViewPort
,因为它通常被设置为你正在使用的任何窗口的整个区域,你改变的是在窗口中获得不同视图的映射。
如果您只是单独调整glFrustum
(例如),屏幕上的显示区域将保持不变,您只需更改映射,这样您仍将填满整个窗口区域,基本上只需移动虚拟相机,就可以在显示的“世界”上放大或缩小(等)。相反,如果您只是调整glViewPort
,则会显示完全相同的数据,但会显示为较小的矩形。
要将数据“剪辑”到较小的矩形,您需要同时调整两者,或多或少地调整“相反”方向,以便您的视口尺寸变小,放大视锥体以进行补偿。