opengl入门教程(二) 第一个opengl程序
1. opengl简介
按照惯例, 怎么能少了opengl简介呢。稍等,我去百度cv个简介来。
OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维也行),是一个功能强大,调用方便的底层图形库。
OpenGL 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。 (引用自百度百科)
本入门教程主要关注于编程方面,至于理论方面很少涉及。代码主要是使用c/c++来写,其他语言函数也差不太多。
2. 6行代码的程序-创建窗口
#include <iostream>
#include <GL/glut.h>
using namespace std;
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("opengl");
glutMainLoop();
return 0;
}
g++ -o main main.cpp -lGL -lglut -lGLU
3. 代码详解
虽然运行出来就是黑窗口, 但是其已经是我们后面写的opengl程序的骨架了。
- 初始化库
头文件
#include <GL/glut.h>
原型
void glutInit(int* argc,char** argv)
参数
argc 指向主函数argc变量的指针, 返回时其值可能会改变
argv 与主函数argv一致, 返回时其值可能会改变
说明
这个函数用来初始化GLUT库并且同窗口系统对话协商, 如果GLUT库不能正确初始化,那么会终止GLUT程序。
- 初始化显示模式
头文件
#include <GL/glut.h>
原型
void glutInitDisplayMode(unsigned int mode)
参数
mode 指定初始化窗口的显示模式, 通常是若干窗口帧缓存特效标识的组合。
详情间文字最后的扩展阅读
说明
当创建顶层窗口,子窗口以及重叠层时,本函数用来确定创建窗口的显示模式。
- 初始化窗口位置
头文件
#include <GL/glut.h>
原型
void glutInitWindowPosition(int x, int y)
参数
x 窗口左上角的x坐标, 单位像素
y 窗口左上角的y坐标, 单位像素
桌面窗口左上角为原点(0, 0)
说明
本函数用来初始化窗口位置。如果x, y某一值为负值, 那么窗口的实际位置有窗口系统决定。
- 初始化窗口大小
头文件
#include <GL/glut.h>
原型
void glutInitWindowSize(int width, int height)
参数
width 窗口宽度, 单位像素
height 窗口高度, 单位像素
说明
本函数用来初始化窗口大小,必须大于0。
- 创建窗口
头文件
#include <GL/glut.h>
原型
void glutCreateWindow(const char* title)
参数
title 窗口标题字符串
说明
本函数设置窗口标题名称。
- 事件循环
头文件
#include <GL/glut.h>
原型
void glutMainLoop()
说明
本函数用于进入事件处理循环, 仅退出窗口时, 函数返回。
4. 参考
- opengl函数与函数解析书册