为了账号安全,请及时绑定邮箱和手机立即绑定

OpenGL 混合功能

标签:
iOS

一、概念:简言之,即在颜色缓存区和深度缓存区中,新旧颜色的覆盖和替换问题;已经存在于缓存区的为目标颜色,即将进入缓存区的为源颜色;

二、应用场景:在不透明的图形前绘制一个透明的图形;

三、主要代码实现

//核心代码

void RenderScene()
{    //清除缓存区
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);    
    //设置四个固定矩形颜色
    GLfloat vRed[] = {1.0f, 0.0f, 0.0f, 0.5f};
    GLfloat vGreen[] = {0.0f, 1.0f, 0.0f, 1.0f};
    GLfloat vBlue[] = {0.0f, 0.0f, 1.0f, 1.0f};
    GLfloat vBlack[] = {0.0f, 0.0f, 0.0f, 1.0f};    
    //绘制四个固定矩形    //GLT_SHADER_IDENTITY:单元着色器    
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
    redBatch.Draw();
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vGreen);
    greenBatch.Draw();
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vBlue);
    blueBatch.Draw();
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vBlack);
    blackBatch.Draw();    
    //移动矩形设置混合功能    //开启混合功能    
    glEnable(GL_BLEND);    
    //设置混合因子    
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);    
    //使用固定管线着色器    
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);    //绘制    
    squareBatch.Draw();    
    //关闭混合功能    
    glDisable(GL_BLEND);    
    //后台渲染完成交给前台   
     glutSwapBuffers();
}

四、效果

 

作者:春天里的花骨朵

原文链接:https://www.cnblogs.com/lybSkill/p/9983755.html


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消