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系列教程之七,介绍了如何使用OpenGL实现颜色混合效果。通过启用和禁用混合功能,可以实现透明度不同的视觉效果。教程中包含了按键控制混合开关的代码实现。
2890

被折叠的 条评论
为什么被折叠?



