glViewport(x(), y(), width(), height());

glDisable(GL_DEPTH_TEST);

glClearColor(0, 0.3, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);

//... drawing commands

绘图正确地在glViewport(x(), y(), width(), height())设置的窗口的一小部分区域中进行

但是,即使在调用glViewport()之后设置背景色,通过glClearColor()设置的背景色也会影响整个窗口。为什么?

最佳答案

glClear 方面:



但是, glViewport 指出



如果我正确阅读了引用文献,则是设计使然。 glViewport仅偏移视口(viewport),这会影响对图元进行栅格化的绘制调用,而glClear仅在整个帧缓冲区区域内起作用。

完整规范(4.3)似乎同意这一点:

10-08 02:12