как нарисовать гладкий/сглаженный круг в opengl?

как нарисовать гладкий/сглаженный круг в opengl? Я использую glBegin(GL_LINE_LOOP); нарисовать мой круг, но он не гладкий. Я включил:

glEnable( GL_LINE_SMOOTH );
glHint( GL_LINE_SMOOTH_HINT, GL_NICEST );
glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

person Demian    schedule 28.04.2012    source источник


Ответы (1)


Это с опозданием на годы, но я сделал это с помощью этого руководства.

Однако это работает только для GL_POINTS.

Чтобы это работало, вам также необходимо включить расширение OES_standard_derivatives.

Вершина:

attribute mediump vec4 Position;
attribute lowp float Size;

void main(void) {
    gl_Position = Position;
    gl_PointSize = Size;
}

Фрагмент:

#extension GL_OES_standard_derivatives : enable

void main(void) {
    lowp vec2 cxy = 2.0 * gl_PointCoord - 1.0;
    lowp float radius = dot(cxy, cxy);
    lowp float delta = fwidth(radius);
    lowp float alpha = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, radius);
    gl_FragColor = vec4(1.0, 1.0, 1.0, alpha);
}
person MysteryPancake    schedule 02.10.2017