nehe
教程的第
8課,**仍然採用
mfc框架來實現。 其中
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);
//enable smooth shading
//colorref color = ::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
);
//black background
glcleardepth(
1.0f
);
//depth buffer setup
glenable(gl_depth_test);
//enables depth testing
gldepthfunc(gl_lequal);
//the type of depth testing to do
glhint(gl_perspective_correction_hint, gl_nicest);
//really nice perspective calculations
glcolor4f(
1.0f
, 1.0f
, 1.0f
, 0.5
);
//full brightness. 50% alpha
glblendfunc(gl_src_alpha,gl_one);
//set the blending function for translucency
return
true;
//initialization went ok}
最後在void copengldemoview::onkeyup(uint nchar, uint nrepcnt, uint nflags)
中加入對
b按鍵的事件處理**:
case'b
':else
}bpressed
=false;
break;}
最終效果如圖所示:
OpenGL中的混合 Blending
其中 initgl 需要做些修改,加入混合操作所需要的 boolcopengldemoview initgl glvoid glenable gl texture 2d gllightfv gl light1,gl ambient,lightambient 設定環境光 gllightfv gl li...
OpenGL混合模式
glblendfunc是這樣 第乙個引數指出源圖元的alpha的取值計算方法,第二個引數指出目標處的alpha的計算方法。opengl會把源顏色和目標顏色各自取出,並乘以乙個係數 源顏色乘以的係數稱為 源因子 目標顏色乘以的係數稱為 目標因子 然後相加,這樣就得到了新的顏 色。也可以不是相加,新版本...
OpenGL 混合功能
核心 void renderscene glfloat vgreen glfloat vblue glfloat vblack 繪製四個固定矩形 glt shader identity 單元著色器 shadermanager.usestockshader glt shader identity,vr...