这是我窝关于OpenGL(C++版本)零基础入门笔记的草稿!本系列文章主要通过每次一个小案例从而由浅至深地带你入门!本次文章主要内容为简单概述OpenGL的语法、库以及显示窗口的范例。
OpenGL概述
OpenGL(开放式图形库)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口。通过它可以在一些计算机上描述图元、属性、几何变换、观察变换等其它操作。属于计算机图形学的范畴。
OpenGL语法概述
OpenGL的核心库中的函数名要以gl为前缀、函数名中每一个组成词的第一个字母要大写(如glBegin)。
有些函数要求一个或多个变量用符号常量赋值,如参数名、参数的值或特定的模式。这些常量均以GL开头并全部大写,单词间用_隔开(如GL_2D)。
OpenGL函数也有专门的数据类型,并且部分函数支持数组(比如多维坐标)。大写GL开头,小写字母表示标准数据类型名(如GLint)。
OpenGL库概述
OpenGL除惹核心库外还有一些用于处理专门操作的附加库。比如实用函数库(GLU)、窗口扩充(GLX)、实用工具包(GLUT)等等,比较模块化。
在微软VS2015下部署环境
新建项目-C++空白项目-创建C++文件;
工具-NuGet包管理器-包管理器控制台;
Install-Package nupengl.core
完成。
使用GLUT进行显示窗口管理
#include <GL/glut.h>
void init(void) {
glClearColor(1.0, 1.0, 1.0, 0.0);
//初始化颜色(RGB值)
glMatrixMode(GL_PROJECTION);
//正坐标
gluOrtho2D(0.0, 200.0, 0.0, 150.0);
//x坐标值(0-200)y坐标值(0-150)
}
void lineSegment(void) {
glClear(GL_COLOR_BUFFER_BIT);
//创建颜色缓存变量
glColor3f(0.0, 0.4, 0.2);
//为场景添加三个浮点颜色RGB值
glBegin(GL_LINES);
//开始画线
glVertex2i(180, 15);//左
glVertex2i(10, 145);//右
glEnd();
glFlush();//刷新一把
}
void main(int argc, char** argv) {
glutInit(&argc, argv);
//对实用函数工具包初始化
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
//窗口显示模式(RGB)
glutInitWindowPosition(50, 100);
//显示位置(左50像素、右100像素)
glutInitWindowSize(400, 300);
//显示大小(400像素x300像素)
glutCreateWindow("An Example OpenGL Program");
//窗口标题
init();
glutDisplayFunc(lineSegment);
//显示何内容
glutMainLoop();
//显示出来
}