2D分屏视图

时间:2013-12-02 00:41:54

标签: c# opengl viewport opentk

我正在使用OpenTK来解决OpenGL问题。在整个窗口上显示一个区域并不是什么大不了的事,但是试图获得某种分屏机制。对于一个屏幕,我会这样做:

GL.Viewport(0, 0, window.Width / 2, window.Height);
GL.LoadIdentity();
GL.Ortho(0, 800, 600, 0, -1, 1);

在GameWindow的resize事件中。我怎样才能在彼此旁边显示其中的2个?我怎样才能让他们在我的“游戏”中显示不同的区域?

1 个答案:

答案 0 :(得分:2)

IMO最简单的方法是使用两个视口。

假设您有两个视图,左右两个,并且您将在右视图之前渲染左视图。

这样,您必须设置左视口和投影,执行左视图渲染,设置右视口和投影,执行正确的视图渲染:

void draw() {
    // update your models or perform anything else here.
    (...)
    // setup your left view projection:
    GL.MatrixMode(GL_PROJECTION);
    GL.LoadIdentity();
    GL.Viewport(0, 0, window.Width / 2, window.Height);
    GL.Ortho(0, 800, 600, 0, -1, 1);
    GL.MatrixMode(GL_MODELVIEW);
    // draw your left view.
    (...)
    // setup your right view projection:
    GL.MatrixMode(GL_PROJECTION);
    GL.LoadIdentity();
    GL.Viewport(window.Width / 2, 0, window.Width, window.Height);
    GL.Ortho(0, 800, 600, 0, -1, 1);
    GL.MatrixMode(GL_MODELVIEW);
    // draw your left view.
    (...)
    // perform any cleanup you need.
    // swap buffers!
}

这是一个非常简化的代码,但我希望它会给你一个如何做的提示。