NeHe教程Qt实现——lesson08

NeHe 系列教程之八: 混合

英文教程地址:lesson08


本课将在第七课的基础上添加颜色混合的代码:

namespace {
...
bool    blend;                      // Blending OFF/ON? ( NEW )
...
bool    bp;                         // B Pressed?
...
}

初始化代码:

void MyGLWidget::initializeGL()
{
    ...

    glColor4f(1.0f,1.0f,1.0f,0.5f);         // Full Brightness, 50% Alpha ( NEW )
    glBlendFunc(GL_SRC_ALPHA,GL_ONE);       // Blending Function For Translucency Based On Source Alpha Value ( NEW )
}

按键处理:

void MyGLWidget::keyReleaseEvent(QKeyEvent *e)
{
    switch (e->key()) {
    ...
    case Qt::Key_B:
        bp = false;
        break;
    default:
        QGLWidget::keyReleaseEvent(e);
    }
}

void MyGLWidget::keyPressEvent(QKeyEvent *e)
{
    switch (e->key()) {
    ...
    case Qt::Key_B:
        if (!bp) {
            bp = true;
            blend = !blend;
            if (blend) {
                glDisable(GL_DEPTH_TEST);
                glEnable(GL_BLEND);
            } else {
                glDisable(GL_BLEND);
                glEnable(GL_DEPTH_TEST);
            }
        }
    ...
    default:
        QGLWidget::keyPressEvent(e);
        break;
    }
}

运行效果图如下:  enable lighting and blending

NeHe教程Qt实现——lesson08

你可能感兴趣的:(function,qt,Blend)