OpenGL GL_POLYGON_SMOOTH 2D抗锯齿创建四边形

Oru*_*aru 6 c c++ opengl rotation antialiasing

更新:

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

在OpenGL中旋转四边形时,边缘会变得锯齿状.

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

这是它的样子: GL_POLYGON_SMOOTH

有没有办法禁用该行,或者我可以用另一种简单的方式获得抗锯齿?我试过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);
Run Code Online (Sandbox Code Playgroud)

Ani*_*Ani 3

好的,我会将其写为答案,尝试后告诉我是否有效。

\n\n

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\xe2\x80\x932 个相连的三角形。

\n\n

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

\n\n
glBegin(GL_TRIANGLE_FAN);\n\nglTexCoord2f(0f, 0f);\nglVertex3f(-halfWidth, -halfHeight, 0f);\n\nglTexCoord2f(0f, 1f);\nglVertex3f(-halfWidth, halfHeight, 0f);\n\nglTexCoord2f(1f, 1f);\nglVertex3f(halfWidth, halfHeight, 0f);\n\nglTexCoord2f(1f, 0f);\nglVertex3f(halfWidth, -halfHeight, 0f);\n\nglEnd();\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在您可以对其进行与四边形相同的转换!希望有帮助!

\n