Top

本地磁盘小日记ヾ(≧▽≦*)ゝ

世界无限大.且行且珍惜w~
编码.计算机视觉.网络.语言.绘图在学/M2F/各种发烧友/死宅/见习公主w;

教程:计算机视觉库OpenGL初体验笔记(一);

这是我窝关于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包管理器-包管理器控制台;

1
Install-Package nupengl.core

完成。


使用GLUT进行显示窗口管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#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();
      //显示出来
  }

@本地磁盘姬

ohayou.aimo.moe

微博:@本地磁盘姬碟酱

Twitter:@AmyGreen

2019年04月02日