在OpenGLES中将绘图限制为矩形

时间:2011-05-19 19:59:32

标签: opengl-es

我需要将对象的绘制限制为矩形。我不能只改变视口以匹配矩形,因为ModelView矩阵(应该更改矩形,但不是内容)可能不是标识。一个可行的解决方案是绘制一个匹配矩形的FBO,然后将FBO绘制到屏幕上,但它似乎很慢。有没有更好的选择呢?

1 个答案:

答案 0 :(得分:3)

如果我理解正确,glScissor应该是您正在寻找的功能。它将渲染裁剪为视口的选定子矩形。这不会修改视口。因此,对象在屏幕上覆盖相同的大小,它只是阻止您在剪刀区域之外绘制任何像素。如果这不是您想要的,并且您希望子矩形包含整个场景,从而缩小对象,则更改视口是首选解决方案。

编辑:如果您希望矩形可以变形并且特别是可旋转(因此在屏幕上不再是矩形),那么渲染到FBO并将其用作四边形上的纹理可能是最好的解决方案。否则你也可能只是在投影后修改顶点坐标,从而将目标矩形的变换矩阵与投影矩阵相乘,并将其用作新的投影矩阵,但我不能完全确定(但至少应该有类似的东西)做到这一点。