OpenGL 混合功能
程序员文章站
2022-06-30 19:37:50
一、概念:简言之,即在颜色缓存区和深度缓存区中,新旧颜色的覆盖和替换问题;已经存在于缓存区的为目标颜色,即将进入缓存区的为源颜色; 二、应用场景:在不透明的图形前绘制一个透明的图形; 三、主要代码实现 //核心代码 四、效果 GitHub ......
一、概念:简言之,即在颜色缓存区和深度缓存区中,新旧颜色的覆盖和替换问题;已经存在于缓存区的为目标颜色,即将进入缓存区的为源颜色;
二、应用场景:在不透明的图形前绘制一个透明的图形;
三、主要代码实现
//核心代码
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(); }
四、效果
上一篇: eclipse导入基本注释模板
下一篇: 发力刘海全面屏 手机厂商还面临这些问题