如何在OpenGL中剪辑渲染(C ++)

时间:2010-05-18 22:00:46

标签: c++ opengl graphics

如何在OpenGL(简单矩形区域)中剪辑渲染? 请发布一个C ++示例。

2 个答案:

答案 0 :(得分:7)

您可能需要的是OpenGL的scissor机制。

剪裁由xywidthheight参数定义的不属于矩形的像素的渲染。< / p>

另请注意,启用此OpenGL状态会通过限制清除区域来影响glClear命令。

答案 1 :(得分:2)

如果您只想显示特定的矩形,则需要glFrustrumglOrtho以及glViewPort的组合。它实际上是glViewPort设置剪切矩形。 glFrustrumglOrthogluPerspective等)然后将一组真实坐标映射到该矩形。通常你几乎没有注意到glViewPort,因为它通常被设置为你正在使用的任何窗口的整个区域,你改变的是在窗口中获得不同视图的映射。

如果您只是单独调整glFrustum(例如),屏幕上的显示区域将保持不变,您只需更改映射,这样您仍将填满整个窗口区域,基本上只需移动虚拟相机,就可以在显示的“世界”上放大或缩小(等)。相反,如果您只是调整glViewPort,则会显示完全相同的数据,但会显示为较小的矩形。

要将数据“剪辑”到较小的矩形,您需要同时调整两者,或多或少地调整“相反”方向,以便您的视口尺寸变小,放大视锥体以进行补偿。