2012-01-13 197 views
1

我使用如下polygonmode绘制三角形:OpenGL的:如何绘制三角形或多边形平滑

drawScene(void) 
{ 
    glPopMatrix(); 
    glEnable(GL_POLYGON_SMOOTH); 
    glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); 
    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
    glShadeModel(GL_POLYGON_SMOOTH); 

    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 

    glBegin(GL_POLYGON); 
     glVertex3f(x,y,z); 
     glVertex3f(x1,y1,z1); 
     glVertex3f(x2,y2,z2); 
    glEnd(); 
    glPopMatrix(); 
} 

顶点(X,Y,Z,X1,Y1,Z1,X2,Y2,Z2 )使用sin()和cos()进行计算,并将im传递给drawScene()方法。基于sin()和cos()值旋转三角形。我的问题是,三角形绘制时不光滑。也就是说,三角形的外围部分没有光滑的线条。在上面的代码中,如果我使用GL_LINE三角形看起来很平滑,而不是GL_FILL。但是,我需要一个实心的三角形。

+6

它看起来像一个别名问题。您能否上传问题的截图,以便我们更好地理解? – 2012-01-13 07:37:07

+2

请更改问题的标题,以表明您指的是绘制一个平滑的三角形而不是三角形的运动。或澄清,如果我误解了 – dirk 2012-01-13 07:45:21

+0

@dirk使用sin()和Cos()im的计算值传递循环中的顶点值并旋转三角形。基于此,我绘制了三角形。绘制之后,三角形没有合适的边框。对不起,如果问题仍然令人困惑。非常感谢 – 2012-01-13 08:48:24

回答

1

根据图形卡的不同,抗锯齿可能无法使用,可能会被禁用,或者可能由应用程序控制。

例如,看看这个配置页面从显卡:

NVidia CP

因此,在这种情况下,任何3D应用程序会走样,因为用户选择,并且可以” t /不应该绕过这个选择。检查您的图形卡控制面板/设置,看看它是否有这样的选项(它可能不支持抗锯齿取决于其年龄)。

另外,请花一些时间写一个描述,准确标题您的问题或没有人在这里会付钱给你的关注。

+0

抱歉没有正确提及标题。下次会照顾。感谢您的回复。我验证了我的显卡设置,它是[英特尔图形设置]类型(http://www.intel.com/support/graphics/sb/CS-030506.htm)。你能告诉我这是否支持反锯齿? – 2012-01-13 09:50:21

+0

我不知道。我有一台带有英特尔图形卡的笔记本电脑,设置页面与此类似(但有一个消除锯齿设置)。 IIRC,我禁用了抗锯齿功能,因为我更关心性能,但是请务必使用任何提及抗锯齿的设置,并查看它是否对使用3D的图形应用程序有所帮​​助。哦,并且记得重新启动任何应用程序以查看更改(例如,游戏运行时更改图形设置有时在重新启动之前无效)。 – 2012-01-13 10:22:59