OpenGL入门

2021-05-21 15:23:24 浏览数 (1)

OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。 OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。

环境配置(以Windows10和Visual Studio2013为例)

首先下载GLUT工具(这个是OpenGL的工具库)

下载地址:https://pan.baidu.com/s/1BoMxp-apBknXRP91m8uAvw

下载完成后解压,

把解压得到的glut.dll和glut32.dll放在C:Windowssystem32文件夹内(32位系统)或 C:WindowsSysWOW64(64位系统)。

把解压得到的glut.h复制到Visual Studio 2013的安装目录(路径)下的”VCincludegl”文件夹中,如果没有gl这个文件夹则新建一个。

把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(如果是VS2013,则是其安装目录下面的”VClib”文件夹)。

第一个OpenGL程序

C 代码:

代码语言:javascript复制
#include <GL/glut.h>
 
 
// called draw scene
void RenderScene(void)
{
	// clear the window with current clearing color
	glClear(GL_COLOR_BUFFER_BIT);
 
	// set current drawing color to red
	glColor3f(1.0f, 1.0f, 0.0f);
 
	// draw rectangle with current color
	glRectf(-0.50f, -0.50f, 0.50f, 0.50f);
 
	// Flush drawing commands & swap
	glFlush();
 
}
 
// Setup the rendering state
void SetupRC(void)
{
	glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
 
int main(int argc, char *argv[])
{
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutCreateWindow("Simple Opengl");
 
	glutDisplayFunc(RenderScene);
 
	SetupRC();
	glutMainLoop();
 
	return 0;

效果:

OpenGL中一些函数

  • glutInit(&argc, argv) 对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次。
  • glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE) 设置显示方式,其中: GLUT_RGB表示使用RGB颜色,与之对应的还有GLUT_INDEX(表示使用索引颜色)。 GLUT_SINGLE表示使用单缓冲,与之对应的还有GLUT_DOUBLE(使用双缓冲)。
  • glutInitWindowPosition(100, 100) 设置窗口在笔记本电脑屏幕中的位置(100,100)。
  • glutInitWindowSize(400, 400) 设置窗口的大小(400X400)。
  • glutCreateWindow(“第一个OpenGL程序”) 根据前面设置的信息创建窗口。”第一个OpenGL程序”参数将被作为窗口的标题。 注意:窗口被创建后,并不立即显示到屏幕上。需要调用glutMainLoop才能看到窗口。
  • glutDisplayFunc(&myDisplay) 设置回调函数,当需要进行画图时,myDisplay这个函数就会被调用。(笔者这个说法不够准确)。
  • glutMainLoop 启动程序执行,进行消息处理循环。(这个函数可以显示窗口,并且等待窗口关闭后才会返回)

参考链接:https://www.jianshu.com/p/6e3dc7a88640

0 人点赞