其中
initgl
需要做些修改,加入混合操作所需要的**:
boolcopengldemoview::initgl(glvoid)
glenable(gl_texture_2d);
//gllightfv(gl_light1,gl_ambient,lightambient);
//設定環境光
gllightfv(gl_light1,gl_diffuse,lightdiffuse);
//設定漫射光
gllightfv(gl_light1,gl_position,lightposition);
//設定光源位置
glenable(gl_light1);
//啟用一號光源
glshademodel(gl_smooth);
//enablesmoothshading
//colorrefcolor=::getsyscolor(color_3dface);
//glclearcolor((float)getrvalue(color)/255.0f,
//(float)getgvalue(color)/255.0f,
//(float)getbvalue(color)/255.0f,
glclearcolor(
0.0f
,0.0f
,0.0f
,0.5f
);//
blackbackground
glcleardepth(
1.0f
);//
depthbuffersetup
glenable(gl_depth_test);
//enablesdepthtesting
gldepthfunc(gl_lequal);
//thetypeofdepthtestingtodo
glhint(gl_perspective_correction_hint,gl_nicest);
//reallyniceperspectivecalculations
glcolor4f(
1.0f
,1.0f
,1.0f
,0.5
);//
fullbrightness.50%alpha
glblendfunc(gl_src_alpha,gl_one);
//settheblendingfunctionfortranslucency
return
true;
//initializationwentok}
最後在void copengldemoview::onkeyup(uint nchar, uint nrepcnt, uint nflags)中加入對b按鍵的事件處理**:
case'b
':else
}bpressed
=false;
break;}
最終效果如圖所示:
OpenGL中的混合 Blending
nehe 教程的第 8課,仍然採用 mfc框架來實現。其中 initgl 需要做些修改,加入混合操作所需要的 boolcopengldemoview initgl glvoid glenable gl texture 2d gllightfv gl light1,gl ambient,lightam...
OpenGL混合模式
glblendfunc是這樣 第乙個引數指出源圖元的alpha的取值計算方法,第二個引數指出目標處的alpha的計算方法。opengl會把源顏色和目標顏色各自取出,並乘以乙個係數 源顏色乘以的係數稱為 源因子 目標顏色乘以的係數稱為 目標因子 然後相加,這樣就得到了新的顏 色。也可以不是相加,新版本...
OpenGL 混合功能
核心 void renderscene glfloat vgreen glfloat vblue glfloat vblack 繪製四個固定矩形 glt shader identity 單元著色器 shadermanager.usestockshader glt shader identity,vr...