2

我有一个以视口中心为中心的主要场景
,此外我还希望在视口的角落显示另一个小对象。麻烦的是,当我绘制小物体时,它被主投影变换变换并出现倾斜。我希望小物体在其中心有自己的消失点。
这可能只是转变吗?

4

1 回答 1

1

您希望以一种方式投影主场景,并以另一种方式投影角落对象。这直接引导您找到解决方案:

void render() {
    glMatrixMode(GL_PROJECTION);
    setUpMainProjection();
    glMatrixMode(GL_MODELVIEW);
    drawMainObject();

    glMatrixMode(GL_PROJECTION);
    setUpCornerProjection();
    glMatrixMode(GL_MODELVIEW);
    drawCornerObject();
}

也许您想知道如何实现 setUpCornerProjection。它看起来像这样:

// let's say r is a rect, which, in eye space, contains the corner object and is
// centered on it
glFrustum(r.left, r.right, r.bottom, r.top, nearVal, farVal);
// let's say p is the rect in screen-space where you want to
// place the corner object
glViewport(p.x, p.y, p.width, p.height);

然后在 setUpMainProjection() 中,您还需要调用 glFrustum 和 glViewport。

于 2011-02-21T22:13:18.263 回答