当前位置: 移动技术网 > 移动技术>移动开发>IOS > OpenGL 混合功能

OpenGL 混合功能

2018年11月20日  | 移动技术网移动技术  | 我要评论

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

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

三、主要代码实现

//核心代码

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();
}

四、效果

 

 

 

github

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网