|
|
在讲Raylib之前,你需要知道森么是OpenGL。
OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形到比较复杂的三维景象。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。
当今,OpenGL是视频行业领域中用于处理2D/3D图形的最为广泛接纳的API,在此基础上,为了用于计算机视觉技术的研究,从而催生了各种计算机平台上的应用功能以及设备上的许多应用程序。其是独立于Windows操作系统以及操作系统平台,可以进行多种不同领域的开发和内容创作,简而言之,其帮助研发人员能够实现PC、工作站、超级计算机以及各种工控机等硬件设备上实现高性能、对于视觉要求极高的高视觉图形处理软件的开发。——摘自 百度百科
是不是听上去很库?OpenGL兼容了众多主流操作系统,且有多个编程语言的应用接口(API),是当今主流两个图形渲染库之一(另一个是仅用于Microsoft Windows上的Direct3D)。
(注:本系列基本使用C++语言经行开发。)
不过,作者个人觉得OpenGL的函数非常奀友好。举个例子,下面是用OpenGL绘制一个立方体的部分程序源代码:
glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
gluLookAt(0.0, 0.0, -10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0);
glBegin(GL_QUADS);
{
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
}
glEnd();
//左面
glBegin(GL_QUADS);
{
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(-0.5, -0.5, 0.5);
}
glEnd();
//下面
glBegin(GL_QUADS);
{
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, -0.5);
}
glEnd();
//右面
glBegin(GL_QUADS);
{
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(0.5, 0.5, -0.5);
}
glEnd();
//前面
glBegin(GL_QUADS);
{
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
}
glEnd();
//后面
glBegin(GL_QUADS);
{
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(0.5, 0.5, -0.5);
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(-0.5, -0.5, -0.5);
}
glEnd();
glFlush();
再看看用Raylib的函数画立方体:DrawCube((Vector3){0.0,0.0,0.0},1,1,1,SKYBLUE);
其实自己封装一个OpenGL画Cube的函数也可以,只要计算出Cube的八个点再用glVertex3fv传参挨个填过去就可以了。但是Raylib已经封装了大量图形绘制的函数,不用自己再麻烦了。
OpenGL的函数是最原始的“设定一个点,再设定一个点,再连线”地绘图,用它画一个立方体需要36+行代码,没有那种封装好可以直接调用的画图函数,而Raylib则是对OpenGL做了大量封装,内置有绘制各种2D/3D图形的函数,只需要设定图形的大小、位置这样的参数就能完成。
这就好比OpenGL是你摘抄时一笔一划写,而Raylib是你把文章剪下来贴在摘抄本上一样AwA
Raylib(直译为雷利卜)是一个简洁轻量的2D/3D图形库。他涵盖了OpenGL的多个库,包括
- glut.h
- glfw.h
- glew.h
- glad.h
- std_image.h
- ...
且可以做到轻松绘制图形、创建窗口、加载贴图、加载声音、鼠标键盘交互等等,是一个为开发游戏而生的库!
Part 2:配置Raylib环境
Raylib的环境配置不难,只要一个编辑器就可以。他就是我们的国产之光——小熊猫C++
 小熊猫C++
相比于传统的Dev-C++,小熊猫C++的功能做了大改动:
操作简便
小熊猫C++无需复杂的安装和配置,打开即可直接编辑程序文件;无需创建项目,点击工具栏上按钮即可编译、运行和调试程序。
轻量高效小熊猫C++基于QT和C++语言开发,使用内置的轻量级代码分析器进行智能语法分析,运行时无需大量的内存和CPU资源,在低配置机器上也能获得流畅的运行体验。
多平台支持小熊猫C++支持Windows 7/8/10、Linux等操作系统。在各种操作系统下都能获得相同的高质量编程体验。
生产力提升通过集成自动缩进、智能代码补全、智能语法高亮和实时语法检查等功能,小熊猫C++提供了流畅的代码编辑体验,可以大幅度提升代码编写的效率。
调试小熊猫C++提供完善的调试功能,包括控制程序执行、断点、监视变量和表达式、表达式求值、查看本地变量、查看和切换调用栈、查看和修改内存、查看CPU寄存器和反编译信息等。小熊猫C++甚至还可以重定向被调试程序的输入!
多屏幕小熊猫C++提供了完善的高分辨率和多显示器支持,能够在多个不同DPI设置的显示器间自由切换,同时提供完善的显示效果,便于教学和展示。
试题集和OJ针对C/C++教学和竞赛需求,小熊猫C++专门提供了试题集和OJ功能:可以方便的组织管理、运行和测试C/C++练习程序;可以导入或者从OJ网站下载试题和配套的测试数据。
GIT版本管理小熊猫C++内置git支持,可以方便对项目或工作文件夹进行版本管理(需额外安装git程序)
| |
||
|
|