2009-08-13 5 views
1

GL_POLYGON이 제대로 채워지지 않았습니까?

왜 내 모양이 그 선들에 나타 납니까? 이 같은

내가 초기화하고있어 OpenGL을 : 모양이 같은

glDisable(GL_TEXTURE_2D); 
glDisable(GL_DEPTH_TEST); 
glDisable(GL_COLOR_MATERIAL); 
glEnable(GL_BLEND); 
glEnable(GL_POLYGON_SMOOTH); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glClearColor(0, 0, 0, 0); 

그리고 그리기 : 그것은 시계 방향 또는 시계 반대 방향의 경우

glClear(GL_COLOR_BUFFER_BIT); 
glColor3f(1, 0, 0); 
glBegin(GL_POLYGON); 
    glVertex2f(-5, -5); // bottom left 
    glVertex2f(5, -5); // bottom right... 
    glVertex2f(6, 0); 
    glVertex2f(5, 5); 
    glVertex2f(-5, 5); 
glEnd(); 

문제가되지 않습니다.

답변

3

GL_POLYGON_SMOOTH를 사용하는 예를 많이 있습니다, 주변을 둘러 보는 것은 다각형 앤티 앨리어싱의 낡은 느린 방법입니다. 또한 위에 나온 문제가 발생합니다.

멀티 샘플 버퍼 확장을 사용하면 최신 기계에서 빠른 앤티 앨리어스를 수행하는 가장 좋은 방법입니다. 자세히보기 here.

+0

멀티 샘플링을 사용하는 방법을 알아 내려고 잠시 생각 났지만 작동하도록했습니다. 이것은 잘 작동합니다 :) 고마워, – mpen

3

GL_POLYGON_SMOOTH를 사용하지 않도록 설정하면 문제가 해결되지만 앤티 앨리어싱을 잃게됩니다. FSAA가 대안으로 작동하지만 느려질 수 있습니다.

편집 : 거기 glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE);

+0

GL_POLYGON_SMOOTH를 비활성화하면 실제로 문제가 해결되었습니다. 후자의 해결책은 그것을 완전히 사라지게합니다. 행복한 중앙값은 없습니까? – mpen

관련 문제