2 playboyplay playboyplay 于 2014.03.01 20:34 提问

opengl抗锯齿没有效果怎么回事?

我测试了一下opengl的抗锯齿功能, 但是发现开启抗锯齿功能前后锯齿还是很重,没有变化,请高手指点. (开发平台win8 64bit, 开发工具vs2012)

下面是代码, 只是画了一条线.

#include "stdafx.h"
#include <GL/glut.h>

void myDisplay(void)
{
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LINE_SMOOTH);
    glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLineWidth(2);
    glColor3d(0,1,0);
    glBegin(GL_LINES);
    glVertex2d(0.0,0.0);
    glVertex2d(0.4,0.05);
    glEnd();

    glFlush();
    glutSwapBuffers();
}


void myReshape(int w, int h){
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    if (w>h)
        glOrtho(-0.5*(float)w/h,0.5*(float)w/h,-0.5,0.5,100,-100);
    else
        glOrtho(-0.5,0.5,-0.5*(float)h/w,0.5*(float)h/w,100,-100);
    glMatrixMode(GL_MODELVIEW);
}


int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(500, 500);
    glutCreateWindow("锯齿测试");
    glutDisplayFunc(&myDisplay);
    glutReshapeFunc(&myReshape);
    glutMainLoop();

    return 0;
} 

2个回答

cxd3341
cxd3341   2015.06.13 22:26

你没有开启颜色混合功能啊,当然没有效果了
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
加上这两句代码再试一下

playboyplay
playboyplay   2014.03.01 20:37

求大神帮忙解答啊, 我网上搜了很久都没找到答案, 网上的抗锯齿的实现确实是这样的.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!