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

top*_*dev 5 c++ opengl graphics

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

Str*_*ger 7

您可能需要的是OpenGL的剪刀机制.

剪辑呈现不属于成长方形像素的定义x,y,widthheight参数.

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


Jer*_*fin 2

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

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

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