OpenGL入门

开放图形库(OpenGL) 是一个跨语言(独立于语言)、跨平台(独立于平台)的API,用于渲染2D和3D矢量图形(使用多边形表示图像)。OpenGL API主要是在硬件上设计的。

null
  • 设计: 此API定义为一组可由客户端程序调用的函数。虽然功能与 C 但它是独立于语言的。
  • 发展: 它是一个不断发展的API和 科罗诺斯集团 定期发布新版本,与前一版本相比有一些扩展功能。GPU供应商还可以以扩展的形式提供一些附加功能。
  • 相关图书馆: 最早的版本与名为OpenGL实用程序库的配套库一起发布。但由于OpenGL是一个相当复杂的过程。因此,为了使它更容易,添加了其他库,如OpenGL实用工具工具包,它后来被免费glut取代。后来包括了GLEE、GLEW和gliding。
  • 实施: 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 filewith which this program is saved.

在windows上以代码::块的形式安装OpenGL

  1. 下载代码块并安装它
  2. 去医院 链接 并从freeglut MinGW包后面出现的下载链接下载zip文件,链接名为download freeglut 3.0.0 for MinGW,并将其解压缩。
  3. 使用“以管理员身份运行”打开记事本,并从中打开文件
    1. 这台电脑>C:(C-drive)>程序文件(x86)>代码块>共享>代码块>模板(然后单击以显示所有文件)
    2. 接下来,开放式过剩。美国海关与边境保护局,搜索所有 32 并替换为 免费供应 .
    3. 然后,从这台电脑上打开>C:(C-drive)>程序文件(x86)>代码块>共享>代码块>模板>向导>glut(然后单击以显示所有文件)
    4. 打开向导。脚本和此处,也替换所有 32 具有 免费供应
  4. 那就去 免费供应 文件夹(下载它的地方)和
    1. 包括>总账并从中复制所有四个文件
    2. 进入这台电脑>C:(C-drive)>程序文件(x86)>代码块>MinGW>包含>GL并粘贴它。
    3. 然后,从下载文件夹freeglut>lib复制两个文件,然后转到这台PC>C:(C-drive)>Program files(x86)>CodeBlocks>MinGW>lib并粘贴它。
    4. 再次转到下载的文件夹freeglut>bin,从这里复制一个文件(freelut.dll),然后转到这台PC>C:(C-drive)>Windows>SysWOW64并粘贴此文件。
  5. 现在打开代码::块。
    1. 选择文件>新建>项目>GLUT项目>下一步。
    2. 给项目标题任何东西,然后选择下一步。
    3. 选择GLUT的位置:这台电脑>C:(C-drive)>程序文件(x86)>代码块>MinGW。
    4. 按OK>Next>Finish。

现在,Code::Blocks已经准备好测试OpenGL文件。

演示如何使用OpenGL

为了展示OpenGL是如何工作的,在C语言中使用OpenGL平台添加了一个简单的圆形绘图程序。

C

// C program to demonstrate
// drawing a circle using
// OpenGL
#include<stdio.h>
#include<GL/glut.h>
#include<math.h>
#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 filewith which this program is saved.

以上程序的输出如下图所示

图片[1]-OpenGL入门-yiteyi-C++库

代码::块中的安装参考: https://www.youtube.com/watch?v=NPcnymtP2SE

本文由 阿迪蒂亚·库马尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享