C++ opengl 方向光

方向光

1.启用一盏灯:glEnable(GL_LIGHTO);最多8盏灯 GL_LIGHT0~GL_LIGHT7
2.设置灯的位置:glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
其中lightPos如float loghtPos[]={0.0f,1.0f,0.0f,0.0f};
这个是一个其次坐标:(x,y,z,w) w为0表示光源为无穷远(如太阳):
1/0=无穷大

这里注意一个概念:
方向光:所有的光都是平行的光(如太阳)

伪代码如下:

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);

	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/81192138