OpenGL入門 04 光照

2021-10-21 13:27:23 字數 1458 閱讀 8252

光照包括環境光、漫反射和鏡面反射。在opengl中,我們要使用光照,首先要初始化光照資訊。

//關閉背面渲染,提高效率

glenable(gl_cull_face);

//初始化燈光

float whitecolor = ;

//燈源位置

float lightpos = ;

//環境光

gllightfv(gl_light0, gl_ambient, whitecolor);

//漫反射光

gllightfv(gl_light0, gl_diffuse, whitecolor);

//鏡面反射光

gllightfv(gl_light0, gl_specular, whitecolor);

//設定光源型別

gllightfv(gl_light0, gl_position, lightpos);

//設定材質顏色

float blackmat = ;

float ambientmat = ;

float diffusemat = ;

float specularmat = ;

glmaterialfv(gl_front, gl_ambient, ambientmat);

glmaterialfv(gl_front, gl_diffuse, diffusemat);

glmaterialfv(gl_front, gl_specular, specularmat);

//開啟光照

glenable(gl_lighting);

glenable(gl_light0);

glenable(gl_depth_test);

在上面**中,分別設定了白色的燈光、燈源位置、環境光、漫反射、鏡面反射以及光源型別和材質。然後我們還需要設定法線。

glloadidentity();

glclear(gl_color_buffer_bit|gl_depth_buffer_bit);

//開始繪製

glbegin(gl_********s);

glnormal3f(0.0f, -1.0f, 0.0f);

glvertex3f(-1.0f, -0.5f, -2.0f);

glnormal3f(0.0f, 1.0f, 0.0f);

glvertex3f(1.0f,-0.5f, -2.0f);

glnormal3f(0.0f, 1.0f, 0.0f);

glvertex3f(0.0f, -0.5f, -10.0f);

//結束繪製

glend();

整個opengl光照的流程就完成了,來看下效果:

openGL光照系統

opengl 把光照系統分成了三部分 光源,材質和光照環境。opengl 沒有考慮光的折射 1.控制光源 第乙個引數表示設定哪乙個光源的屬性,第二個引數表示設定這個光源的哪個屬性,第三個引數則表示把該屬性值設定為多少 gllightfv gl light0,gl position,sun light...

Opengl光照(茶壺)

include initialize material property,light source,lighting model,and depth buffer.void init void glfloat mat shininess glfloat light position glfloat ...

OpenGL 光照模型

材質有三種,也就是對光有三種反射 材質被分為了三個屬性,也分別用三個引數來刻畫 對於乙個頂點,有四個向量來刻畫其光照 計算的時候也分為鏡面 漫和環境三類,之後再疊加起來即得到光照下的顏色 向量nlvr 求解顏色 鏡面反射 is rs max v r a,0 ls 環境反射 ia ra la於是 i ...