OpenGL窗口中的多个垂直面板
在OpenGL中,是否可以将窗口分隔为多个垂直“面板”,以便每个面板显示一组不同的形状OpenGL窗口中的多个垂直面板,opengl,Opengl,在OpenGL中,是否可以将窗口分隔为多个垂直“面板”,以便每个面板显示一组不同的形状 我希望在这些面板上同步水平轴,但垂直轴将完全独立(位置和比例)。首先想到的是对glViewport()应用多个调用。必须依次渲染每个垂直条带,然后将视口设置为渲染到下一个垂直条带并重复。我这样做是为了将屏幕一分为二,并从两个不同的视点渲染场景,但没有理由必须在第二个或第n个视口中渲染相同的场景 所以我的{edited}代码看起来像这样: glEnable(GL_SCISSOR_TEST); ... // Dr
我希望在这些面板上同步水平轴,但垂直轴将完全独立(位置和比例)。首先想到的是对
glViewport()
应用多个调用。必须依次渲染每个垂直条带,然后将视口设置为渲染到下一个垂直条带并重复。我这样做是为了将屏幕一分为二,并从两个不同的视点渲染场景,但没有理由必须在第二个或第n个视口中渲染相同的场景
所以我的{edited}代码看起来像这样:
glEnable(GL_SCISSOR_TEST);
...
// Draw the left scene
glViewport(0,0,halfWidth,fullHeight);
glScissor(0,0,halfWidth,fullHeight);
glClear(...);
glPushMatrix();
setLeftEyeModelView();
renderScene();
glPopMatrix();
// Draw the right scene
glViewport(halfWidth,0,halfWidth,fullHeight);
glScissor(halfWidth,0,halfWidth,fullHeight);
glClear(...);
glPushMatrix();
setRightEyeModelView();
renderScene();
glPopMatrix();
这需要一些额外的
glEnable(GL_剪刀式测试);glScissor(…)代码>匹配视口,否则可能会出现奇怪的渲染工件。@datenwolf我相信你,但我自己使用它从来没有遇到过任何问题。工件在什么条件下出现?快速搜索会使它看起来像glClear()
应用于整个屏幕,而不是视口,除非你使用剪刀测试,但我实际上指望着这一点;在某些情况下,基本体不会在视口边缘上被剪裁,从而导致基本体过度绘制到视口外的区域。OpenGL没有明确定义正确的行为,因此在不同的实现中可以观察到正确的剪裁和透支。但是,如果启用剪切测试,则会强制执行正确的行为。添加与剪辑空间边界匹配的剪辑平面也是如此,因为视口剪辑是在屏幕空间中实现的,而剪辑平面是在眼睛空间中操作的。@datenwolf已修复。谢谢你的信息。