我在Mac OS X 10.9上使用FLTK 1.3作为OpenGL窗口上下文创建(Fl_Gl_Window)等的基础。
目标是在其上创建一些包含简单基元的网格。我曾经在2D中用OpenGL做过一些简单的事情,但现在我迷失了。除了边缘之外,所有渲染都尽可能好。他们都是如此,嗯......天啊,你知道。
很明显,这些物体需要任何形式的抗锯齿。它是简单的供应商实现特定的平滑AA还是完全多重采样。问题是我无法在FLTK中打开它。不能用于三角形,但可用于直线。
到目前为止,我尝试了glEnable(GL_POLYGON_SMOOTH),窗口上的多重采样(似乎不起作用),不同的混合功能,更改着色器模型。
也许是因为对象的三角扇结构?请帮助我,谢谢你!
用于对象的代码:
float object_width = 100;
float object_height = 50;
float object_x = 250;
float object_y = 100;
glColor3f(0, 0, 1);
glBegin(GL_TRIANGLE_FAN);
for(int i = 0; i < 30; i++)
glVertex2f(object_x + (object_width / 2) * cosf(i * 12 * DEG2RAD), object_y + (object_height / 2) * sinf(i * 12 * DEG2RAD));
glEnd();
窗口创建代码(仅模式设置):
mode(FL_RGB | FL_ALPHA | FL_DOUBLE);
init上使用的代码:
glClearColor(0.9, 0.9, 0.9, 1);
glDisable(GL_DEPTH_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Colored output, but not smooth
//glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE_MINUS_SRC_ALPHA); // All drawn black, no smooth
//glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE); // All drawn black, no smooth either
glEnable(GL_BLEND);
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POLYGON_SMOOTH); // not working???
在不同的混合模式下,GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA得到这张照片: