OpenGl 环境搭建与介绍
OpenGL 二维图形学教程系列
此系列翻译自:OpenGL Tutorial An Introduction on OpenGL with 2D Graphics
- OpenGl 环境搭建与介绍
 - OpenGl 顶点,图元以及颜色
 - OpenGL 裁剪区域与视口
 - OpenGl 平移和旋转
 - OpenGl 动画
 - OpenGL 使用 GLUT 处理键盘输入
 - OpenGL 使用 GLUT 处理鼠标输入
 
1. 搭建 OpenGL 环境
取决于你的编程平台,有以下教程:
1.1 例子 1:设置 OpenGL 与 GLUT(GL01Hello.cpp)
确保你能够运行以下程序:
/*
 * GL01Hello.cpp: Test OpenGL/GLUT C/C++ Setup
 * Tested under Eclipse CDT with MinGW/Cygwin and CodeBlocks with MinGW
 * To compile with -lfreeglut -lglu32 -lopengl32
 */
#include <windows.h>  // for MS Windows
#include <GL/glut.h>  // GLUT, include glu.h and gl.h
 
/* Handler for window-repaint event. Call back when the window first appears and
   whenever the window needs to be re-painted. */
void display() {
   glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set background color to black and opaque
   glClear(GL_COLOR_BUFFER_BIT);         // Clear the color buffer (background)
 
   // Draw a Red 1x1 Square centered at origin
   glBegin(GL_QUADS);              // Each set of 4 vertices form a quad
      glColor3f(1.0f, 0.0f, 0.0f); // Red
      glVertex2f(-0.5f, -0.5f);    // x, y
      glVertex2f( 0.5f, -0.5f);
      glVertex2f( 0.5f,  0.5f);
      glVertex2f(-0.5f,  0.5f);
   glEnd();
 
   glFlush();  // Render now
}
 
/* Main function: GLUT runs as a console application starting at main()  */
int main(int argc, char** argv) {
   glutInit(&argc, argv);                 // Initialize GLUT
   glutCreateWindow("OpenGL Setup Test"); // Create a window with the given title
   glutInitWindowSize(320, 320);   // Set the window's initial width & height
   glutInitWindowPosition(50, 50); // Position the window's initial top-left corner
   glutDisplayFunc(display); // Register display callback handler for window re-paint
   glutMainLoop();           // Enter the event-processing loop
   return 0;
}
#include <windows.h>
注意头文件 “windows.h” 仅在 Windows 平台需要。
#include <GL/glut.h>
我们还需要包含 GLUT 头文件,其已经包含了 “glu.h” 和 “gl.h”。
该程序的剩余部分会在相应的教程中解释。
2. 介绍
OpenGL(开放图形库,Open Graphics Library)是一个跨平台的,具备硬件加速的,语言无关的用于构建 3D(包含2D)图形的工业标准 API。现代计算机大多具备专门的带有独立内存的图像处理单元(GPU)用以加速图形渲染。OpenGL 就是这些图像处理硬件的软件接口。
在我们的 OpenGL 程序中使用了以下三组软件库:
- OpenGL 核心库(GL):包含数以百计的函数,以 “gl”开头(例如:
glColor,glVertex,glTranslate,glRotate)。OpenGL 核心库通过一组几何图元(例如点,线,多边形)来进行建模。 - OpenGL 实用程序库(GLU):基于 OpenGL 核心构建,提供一些重要的实用程序(例如:设置摄像机以及投影),以 “glu”开头(例如:
gluLookAt,gluPerspective)。 - OpenGL 实用工具包(GLUT):OpenGL 被设计为独立于操作系统。因此我们需要 GLUT 来与操作系统进行交互(例如:创建窗口,处理键盘和鼠标输入),其提供的函数以 “glut” 开头(例如:
glutCreatewindow,glutMouseFunc)。GLUT 是平台无关的,其基于平台相关的 OpenGL 扩展构建,例如对于 X Window 是 GLX,对于 Windows 系统是 WGL,对于 Mac OS 则是 AGL,CGL 或者 Cocoa。 
Links: OpenGl-环境搭建与介绍