VC6新建一个openGL类型项目;

出现一些选项,默认后生成一个项目;
 
VC6自带GL支持;

需要添加附加包含路径;
 
而后构建工程;运行如下;

是一个旋转的立方体;
生成的代码不是MFC的,也不是纯win32的,是对win32进行了一定的封装;
GL初始化之后,绘制的主要代码如下;

一共六组 Begin...End,每组绘制一个面;
    glBegin(GL_POLYGON);
       ............
     glEnd();
生成的代码实现动画旋转是,
void CMainWnd::Tick(BOOL &bRedrawScene)
 {
     m_fAngle+= 1; // Add some rotation to the cube
 }
m_fAngle每次加1实现,改为m_fAngle+= 0之后,旋转即停止;先把旋转停了;
下面学习一下OpenGL视口;
void glViewport();
 void glViewport(left,top,right,bottom);设置在屏幕上的窗口大小,四个参数描述屏幕窗口四个角上的坐标(以象素表示);
 glViewport在默认情况下,视口被设置为占据打开窗口的整个像素矩形,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来实现这一变换,在窗口中定义一个像素矩形,最终将图像映射到这个矩形中。例如可以对窗口区域进行划分,在同一个窗口中显示分割屏幕的效果,以显示多个视图。
DrawScene()代码如下;
void CMainWnd::DrawScene()
{
	// TODO: Replace the following sample code with your code to draw the scene.
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear buffers
  glLoadIdentity(); // Load identity matrix
	// Add a light source
	GLfloat glfLight[] = {-4.0f, 4.0f, 4.0f, 0.0f};
	glLightfv(GL_LIGHT0, GL_POSITION, glfLight);
 
	// Position and rotate the camera
  glTranslatef(0.0f, 0.0f, -5.0f);	
	glRotatef(30.0f, 1.0f, 0.0f, 0.0f);
	glRotatef(m_fAngle, 0.0f, 1.0f, 0.0f);
	// Draw a cube
	static GLfloat r = .7f;
	glViewport(0, 0, 800, 800);
	GLCube(-r, -r, -r, r, r, r);
	glViewport(400, 0, 800, 800);
	GLCube(-r, -r, -r, r, r, r);
	glFlush();
} 
原来的DrawScene()中只调用一次GLCube;增加视口函数,并在每个视口调用GLCube;
之后运行如下;
















![C国演义 [第五章]](https://img-blog.csdnimg.cn/d2737b51c7934171b801a59b45177d53.png)



