FLTK:OpenGL三角形平滑

时间:2014-06-08 18:33:20

标签: opengl 2d fltk

我在Mac OS X 10.9上使用FLTK 1.3作为OpenGL窗口上下文创建(Fl_Gl_Window)等的基础。

目标是在其上创建一些包含简单基元的网格。我曾经在2D中用OpenGL做过一些简单的事情,但现在我迷失了。除了边缘之外,所有渲染都尽可能好。他们都是如此,嗯......天啊,你知道。

edgy object on smooth lined grid

很明显,这些物体需要任何形式的抗锯齿。它是简单的供应商实现特定的平滑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得到这张照片:

black non-smooth ellipse

0 个答案:

没有答案