【问题标题】:OpenGL GL_POLYGON_SMOOTH 2D Antialiasing creating tris out of quadsOpenGL GL_POLYGON_SMOOTH 2D 抗锯齿从四边形中创建 tris
【发布时间】:2012-02-16 15:35:13
【问题描述】:

更新:

我在安装 NVIDIA 控制面板时找到了它,如果我卸载它就可以正常工作。

当您在 OpenGL 中旋转四边形时,边缘会变成锯齿状。

如果我调用 glEnable(GL_POLYGON_SMOOTH),边缘会变得平滑,但 OpenGL 会在我的所有图像中绘制一条白色对角线,就好像它正在创建我的四边形的 trisout。

这是它的外观:

有没有办法禁用该行,或者我可以通过另一种简单的方式获得抗锯齿功能? 我尝试了 GL_MULTISAMPLE,但什么也没发生。

在我的代码中我也有:

glShadeModel(GL_SMOOTH);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glDisable(GL_DEPTH_TEST);

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

【问题讨论】:

  • 看起来两个三角形的顶点不匹配,形成了细线。不要画一个四边形,试着画一个三角形扇形。 IMO,这条线应该消失,因为 OpenGL 现在知道哪些顶点是共享的(并且完全相等)。
  • 嗯好吧,我理解不匹配的部分。但我不明白如何绘制两个三角形,每个三角形各有一半图像,然后分别旋转/缩放它们。目前我将纹理绘制到常规四边形上:我对 OpenGL 很陌生,而且我根本没有使用过三角形,因为我只使用 2D 和图像。所以请指点我如何画一个三角扇的方向。谢谢,马库斯
  • 您是否在不止一台具有不同显卡和/或不同驱动程序的计算机上对此进行了测试?在我看来这可能是一个驱动程序错误。
  • 看起来你的混合功能是问题所在。您是否尝试过 opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml 的其他选项?具体来说,像glBlendFunc(GL_SRC_ALPHA_SATURATE,GL_ONE) ?
  • @Jerry Coffin,好电话,我在笔记本电脑上进行了测试,白线消失了。我已经为我的桌面下载了 3 个不同的驱动程序,285.62、295.51 和 295.53,但没有区别。我使用 460SLI 并尝试一次禁用一个,但它仍然不起作用。你有什么建议我可以尝试解决这个问题吗?谢谢,

标签: c++ c opengl rotation antialiasing


【解决方案1】:

好的,我把这个写下来作为答案,试用后告诉我是否有效。

GL_TRIANGLE_FAN:如果应用程序指定一个顶点序列v,OpenGL使用v 0、v 1和v 2渲染一个三角形;另一个使用 v 0、v 2 和 v 3 的三角形;另一个使用 v 0、v 3 和 v 4 的三角形;等等。如果应用程序指定了 n 个顶点,OpenGL 会渲染 n-2 个连接的三角形。

所以要绘制一个以原点为中心的单位四边形,

glBegin(GL_TRIANGLE_FAN);

glTexCoord2f(0f, 0f);
glVertex3f(-halfWidth, -halfHeight, 0f);

glTexCoord2f(0f, 1f);
glVertex3f(-halfWidth, halfHeight, 0f);

glTexCoord2f(1f, 1f);
glVertex3f(halfWidth, halfHeight, 0f);

glTexCoord2f(1f, 0f);
glVertex3f(halfWidth, -halfHeight, 0f);

glEnd();

现在您可以围绕它进行与您在四边形周围使用的相同的转换!希望对您有所帮助!

【讨论】:

  • 对不起,但这给出了与绘制四边形完全相同的输出。不过感谢您的努力。 //马库斯
  • 此时我开始怀疑驱动程序和/或 GPU,正如 @jerrycoffin 上面所说的那样。在其他 GPU/驱动程序上尝试一下。
  • 是的,我很确定就是这样。这真的很奇怪。自从我 18 个月前购买 mu GPU 以来,我从来没有遇到过任何问题。我尝试了几个不同的驱动程序,但没有帮助。我尝试一次禁用一个 GPU,但这也无济于事。我不知道如何对 GPU 本身进行故障排除。如果它只是我的电脑,我可以忍受它,但由于我希望发布我正在开发的游戏,如果这种情况经常发生是不可接受的=/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多