C++ opengl 环境光分量

环境光分量

当一个环境光为r,g,b,a
物体的反射系数为mr,mg,mb,ma
时,那么看到的光就为:
r*mr,g*mg,b*mb,a*ma

环境光:从四面八方射进来的光

如下面,设置环境光:
glLightfv(GL_LIGHT0,GL_AMBIENT,whiteColor);
设置反射系数:
glMaterialfy(GL_FRONT,GL_AMBIENT,ambientMat);

伪代码如下图:

void Draw() {
	glClearColor(30.0f / 255.0f, 30.0f / 255.0f, 30.0f / 255.0f, 1.0f);
	glClear(GL_COLOR_BUFFER_BIT);
	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);
	float lightPos[] = { 0.0f,1.0f,0.0f,0.0f };
	glLightfv(GL_LIGHT0, GL_POSITION, lightPos);

	float whiteColor[] = { 1.0f,1.0f,1.0f,1.0f };
	float ambientMat[] = { 0.07f,0.07f,0.07f,1.0f };
	glLightfv(GL_LIGHT0, GL_AMBIENT, whiteColor);
	glMaterialfv(GL_FRONT, GL_AMBIENT, ambientMat);

	glBegin(GL_QUADS);
	glColor4ub(255, 255, 255, 255);
	glVertex3f(-0.5f, -0.2f, -0.5f);
	glVertex3f(0.5f, -0.2f, -0.5f);
	glVertex3f(0.5f, -0.2f, -1.0f);
	glVertex3f(-0.5f, -0.2f, -1.0f);
	glEnd();
}

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/81192305