Demo: 01-渲染三角形、02-正方形移动、03-绘制图形
一、OpenGL 简介
OpenGL发展至今,已经20余年。作为一个成熟而久负盛名的跨平台的计算机图形应用程序接口规范,它已经被广泛应在游戏、影视、军事、航空航天、地理、医学、机械设计,以及各类科学数据可视化的领域
二、什么是OpenGL
OpenGL 是一种应用程序编程接口(Application Programming Interface,API)
OpenGL 与 OpenGL ES 有什么关系?
OpenGL 是如何横跨2个处理器之间,协调2个内存区域直接的数据交换?
为什么要用OpenGL?
三、OpenGL 关键词
渲染
模型
着色器
四种不同的着色阶段
帧缓存
四、OpenGL 渲染图像程序需要执行的操作:
1.从OpenGL的几何图元中设置数据,用于构建形状
2.使用不同的着色器对输入的图片数据执行计算操作,判断它们的位置,颜色以及其他渲染属性;
3.将输入的图元的数学描述转为屏幕位置对于的像素片元,这一步称为光栅化;
4.最后,针对光栅化过程的每一个片元,执行片元着色器,从而决定这个片元的最终颜色和位置。
OpenGL 渲染流程
五、常用函数
glutInit()
负责初始化GLUT库。它会处理向程序输入的命令行参数,并且移除其中与控制GLUT如何操作相关的部分。它必须是应用程序第一个GLUT函数,负责设置其他GLUT例程必需的数据结构。
glutInitDisplayMode()
设置了程序所使用的窗口类型。窗口设置更多的OpenGL 特性,例如RAGA颜色空间,使用深度缓存或动画效果。
glutInitWindowsSize()
设置所需的窗口大小,如果不想在这个设置一个固定值,也可以先查询显示设备的尺寸,然后根据计算机的屏幕动态设置窗口的大小。
glutCreateWindow()
它的功能和它的名字一样,如果当前的系统环境可以满足glutInitDisplayMode()的显示模式要求,这里就会创建一个窗口(此时会调用计算机窗口系统的接口)。只有GLUT创建了一个窗口之后(其中包含创建创建OpenGL环境的过程),我们才可以使用OpenGL相关的函数
glewInit()
函数,属于另一个辅助库GLEW(OpenGL Extention Wrangler)。GLEW可以简化获取函数地址的过程,并且包含了可以跨平台使用的其他一些OpenGL编程方法。
glutDisplayFunc()
它设置了一个显示回调(diplay callback),即GLUT在每次更新窗口内容的时候回自动调用该例程
glutMainLoop()
这是一个无限执行的循环,它会负责一直处理窗口和操作系统的用户输入等操作。(注意:不会执行在glutMainLoop()之后的所有命令。)