Open Graphics Library (OpenGL)是一种跨语言(独立于语言)、跨平台(独立于平台)的 API,用于渲染 2D 和 3D 矢量图形(使用多边形来表示图像)。 OpenGL API 主要是在硬件中设计的。
- 设计:此 API 被定义为一组可由客户端程序调用的函数。虽然功能类似于C语言,但它是独立于语言的。
- 开发:它是一个不断发展的 API, Khronos Group定期发布新版本,与以前的版本相比,它具有一些扩展功能。 GPU 供应商也可能以扩展的形式提供一些附加功能。
- 关联的库:最早的版本是与一个称为 OpenGL 实用程序库的配套库一起发布的。但由于 OpenGL 是一个相当复杂的过程。因此,为了使其更容易,添加了其他库,例如 OpenGL Utility Toolkit,后来被 free glut 取代。后来包含的库是 GLEE、GLEW 和滑翔。
- 实现: Mesa 3D 是 OpenGL 的开源实现。它可以进行纯软件渲染,也可以利用直接渲染基础设施在 BSD、Linux 和其他平台上使用硬件加速。
在 Ubuntu 上安装 OpenGL
要在 Ubuntu 上安装 OpenGL,只需在终端中执行以下命令(如安装任何其他东西):
sudo apt-get install freeglut3-dev
对于在 Ubuntu 操作系统上工作:
gcc filename.c -lGL -lGLU -lglut
where filename.c is the name of the file
with which this program is saved.
在 Code::Blocks 中的 Windows 上安装 OpenGL
- 下载代码块并安装
- 转到链接并从 freeglut MinGW 包之后出现的下载链接下载 zip 文件,链接名称为 Download freeglut 3.0.0 for MinGW 并解压缩。
- 以管理员身份运行打开记事本并从中打开文件
- This PC > C:(C-drive) > Program Files(x86) > CodeBlocks > share > CodeBlocks > templates,(然后点击显示所有文件)
- 接下来,打开 glut.cbp 并搜索所有glut32并替换为freeglut 。
- 然后,从 This PC > C:(C-drive) > Program Files(x86) > CodeBlocks > share > CodeBlocks > templates > Wizard > glut打开(然后单击以显示所有文件)
- 打开wizard.script,在这里,也用freeglut替换所有的glut32
- 然后转到freeglut文件夹(下载的位置)和
- 包括> GL 并从那里复制所有四个文件
- 转到此 PC > C:(C-drive) > Program Files(x86) > CodeBlocks > MinGW > include > GL 并粘贴它。
- 然后,从下载文件夹 freeglut > lib,复制两个文件并转到 This PC > C:(C-drive) > Program Files(x86) > CodeBlocks > MinGW > lib 并粘贴它。
- 再次转到下载的文件夹 freeglut > bin 并从此处复制一个文件 (freeglut.dll),然后转到此 PC > C:(C-drive) > Windows > SysWOW64 并粘贴此文件。
- 现在打开代码::块。
- 选择文件 > 新建 > 项目 > GLUT 项目 > 下一步。
- 给项目标题任何东西,然后选择下一步。
- 选择 GLUT 的位置:This PC > C:(C-drive) > Program Files(x86) > CodeBlocks > MinGW。
- 按确定 > 下一步 > 完成。
现在,Code::Blocks 已准备好测试 OpenGL 文件。
演示如何使用 OpenGL
为了展示 OpenGL 的工作原理,使用 OpenGL 平台在 C 中添加了一个简单的圆绘制程序。
C
// C program to demonstrate
// drawing a circle using
// OpenGL
#include
#include
#include
#define pi 3.142857
// function to initialize
void myInit (void)
{
// making background color black as first
// 3 arguments all are 0.0
glClearColor(0.0, 0.0, 0.0, 1.0);
// making picture color green (in RGB mode), as middle argument is 1.0
glColor3f(0.0, 1.0, 0.0);
// breadth of picture boundary is 1 pixel
glPointSize(1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// setting window dimension in X- and Y- direction
gluOrtho2D(-780, 780, -420, 420);
}
void display (void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
float x, y, i;
// iterate y up to 2*pi, i.e., 360 degree
// with small increment in angle as
// glVertex2i just draws a point on specified co-ordinate
for ( i = 0; i < (2 * pi); i += 0.001)
{
// let 200 is radius of circle and as,
// circle is defined as x=r*cos(i) and y=r*sin(i)
x = 200 * cos(i);
y = 200 * sin(i);
glVertex2i(x, y);
}
glEnd();
glFlush();
}
int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
// giving window size in X- and Y- direction
glutInitWindowSize(1366, 768);
glutInitWindowPosition(0, 0);
// Giving name to window
glutCreateWindow("Circle Drawing");
myInit();
glutDisplayFunc(display);
glutMainLoop();
}
要在 Ubuntu 中编译上述程序,
gcc filename.c -lGL -lGLU -lglut -lm
where filename.c is the name of the file
with which this program is saved.
上述程序的输出显示在下面的屏幕截图中
Code::Blocks 中的安装参考: https://www.youtube.com/watch?v=NPcnymtP2SE