Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL窗口中的多个垂直面板_Opengl - Fatal编程技术网

OpenGL窗口中的多个垂直面板

OpenGL窗口中的多个垂直面板,opengl,Opengl,在OpenGL中,是否可以将窗口分隔为多个垂直“面板”,以便每个面板显示一组不同的形状 我希望在这些面板上同步水平轴,但垂直轴将完全独立(位置和比例)。首先想到的是对glViewport()应用多个调用。必须依次渲染每个垂直条带,然后将视口设置为渲染到下一个垂直条带并重复。我这样做是为了将屏幕一分为二,并从两个不同的视点渲染场景,但没有理由必须在第二个或第n个视口中渲染相同的场景 所以我的{edited}代码看起来像这样: glEnable(GL_SCISSOR_TEST); ... // Dr

在OpenGL中,是否可以将窗口分隔为多个垂直“面板”,以便每个面板显示一组不同的形状


我希望在这些面板上同步水平轴,但垂直轴将完全独立(位置和比例)。

首先想到的是对
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已修复。谢谢你的信息。