函数 gluPerspective() 可用于设置近 Z 和远 Z 剪切平面。
我想画一个剪裁在某个远 Z 平面的场景,并在这个 Z 平面之外画另一个场景。是否可以每帧进行两次剪辑?
你没有理由不能这样做。
只需设置第一个透视图,绘制第一个场景,然后设置第二个透视图并绘制第二个场景,所有这些都在同一帧的绘图中。
这通常被称为多通道渲染。
您可能需要先绘制最远的场景,glClear(GL_DEPTH_BUFFER_BIT);
然后再绘制最近的场景。
一种可能性是为场景分配不同的深度范围。一些伪代码是:
glDepthRange(0.5, 1.0)
draw_far_scene
glDepthRange(0.0, 0.5)
draw_near_scene
您必须设置投影矩阵才能对近/远场景执行正确的剪辑。
需要分配深度范围以防止深度缓冲区“合并”两个渲染。