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 glAccum试图制作浮雕的奇怪行为_Opengl - Fatal编程技术网

Opengl glAccum试图制作浮雕的奇怪行为

Opengl glAccum试图制作浮雕的奇怪行为,opengl,Opengl,我正试着做一个模拟图来给我的学生们展示天线图。我使用glAccum的一个经典技术:将左眼“加载”到蓄能器中,将右眼“加载”到蓄能器中,然后将蓄能器放回前面。(请注意,我知道这不会产生完美的立体画。毕竟我甚至没有使用透视投影-我使用的是glOrtho(可能这就是问题所在吧?)。我只是担心glAccum为什么没有按预期工作) 这似乎有效,但只是部分有效。 该图像显示了一个3D轴系统,这表明生成实际上是可行的,但在左侧,红色错误地覆盖青色,而在右侧,青色实际上与红色混合,产生白色,这是应该的。也许以

我正试着做一个模拟图来给我的学生们展示天线图。我使用glAccum的一个经典技术:将左眼“加载”到蓄能器中,将右眼“加载”到蓄能器中,然后将蓄能器放回前面。(请注意,我知道这不会产生完美的立体画。毕竟我甚至没有使用透视投影-我使用的是glOrtho(可能这就是问题所在吧?)。我只是担心glAccum为什么没有按预期工作)

这似乎有效,但只是部分有效。

该图像显示了一个3D轴系统,这表明生成实际上是可行的,但在左侧,红色错误地覆盖青色,而在右侧,青色实际上与红色混合,产生白色,这是应该的。也许以下图像更清晰:

左侧图像显示预期的颜色添加,而右侧图像显示红色覆盖青色

有人能解释一下吗?当然,实际的情节更为复杂


顺便说一句,我知道其他生成浮雕的方法…

嗯,@Bahbar的想法为我指明了正确的方向。虽然我已经看到了很多页面的示例,但我怀疑清除深度缓冲区可能会对图形产生影响。所以我补充说

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
在渲染两个视图之间,问题就解决了
在网上看了更多的东西,我实际上找到了这样做的例子。我很高兴——我甚至添加了正确的、基于截锥体的立体透视图。结果是:


感谢您的关注,也许这可以帮助其他人…

您有任何GL错误吗?我不想告诉您,但是您为眼睛渲染视图的方式是错误的。当前要做的是旋转视图(通过在两个眼睛位置朝着汇聚点使用LookAt,或直接使用glRotate)。实际上,您必须使用非对称/移动的平截头体和平移的视点(离轴投影)。请看我的回答@Grimmy:谢谢你的建议!是的,当我试图在原始消息中标记时,我知道我正在使用的系统的弱点。我对获得一幅完美的立体画不太感兴趣,毕竟我也在使用glOrtho,这也没什么帮助。我很好奇为什么累加器没有像(我)预期的那样组合图像。你清除了两眼之间的渲染吗?@jcoppens:实际上,你根本不需要累加器缓冲区。您可以使用像
clear(color | depth)这样的序列;GLCOLORSMASK(GL_真、GL_假、GL_假、GL_假);画左();glColorMask(GL_FLASE、GL_TRUE、GL_TRUE、GL_FALSE);清晰(深度);向右绘制()
以获得红色/青色浮雕图像。很高兴我能提供帮助。值得一提的是,我之所以建议这样做,是因为在我看来,您的第二次渲染好像从第一次渲染z开始进行z测试(一边是红色遮挡,另一边不是)。我应该特别叫Z-buffer@巴赫巴:互联网信息是一个伟大的工具,但它也可以提供巨大的混乱。。。我将在程序中解决一些其他问题,并发布代码。也许可以让别人不头疼。干杯