其他分享
首页 > 其他分享> > openGL学习记录(其一)

openGL学习记录(其一)

作者:互联网

首先,感谢傅老师的视频教程,下面给出地址
https://www.bilibili.com/video/av24353839
里面有着详细的搭建环境的内容,主要使用的是glfw和glew

第一课
根据视频学会了搭建环境,以及最简单的创建窗口

#define GLEW_STATIC//根据 glew32s.lib glew32.lib 链接库不同 ,可以选择是否打开这个宏
#include <GL/glew.h>
#include <GLFW/glfw3.h>//glew 的头文件都需要在 glfw 之前,否则会无法编译通过
#include <iostream>
using namespace std;

int main()
{
	glfwInit();
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

	//open GLFW window
	GLFWwindow* window = glfwCreateWindow(800, 600, "My OpenGL Game", NULL, NULL);//获取指针
	if (window == NULL)
	{
		cout << "fail to create CLFW window" << endl;
		glfwTerminate();//提前结束窗口
		return -1;
	}
	glfwMakeContextCurrent(window);//可视化窗口

	//init GLEW
	
	glewExperimental = true;//一般位于glewInit()之前,有的平台没有会报错
	if (glewInit()!=GLEW_OK)
	{
		cout << "init glew failed" << endl;
		glfwTerminate();//提前结束
		return -1;
	}

	glViewport(0, 0, 800, 600);//函数的作用如其名:在窗口中设置一个可视矩形,只有在矩形内部的图形才可以看到,前两个是起点坐标,第三个参数和第四个参数分别是宽和高

	while (!glfwWindowShouldClose(window))
	{
		glfwSwapBuffers(window);//简单来说这个函数的作用就是避免闪烁(毕竟成型并不是一瞬间,而是需要时间的),通过采用双缓冲解决,一个用来成型,一个用来展示
		glfwPollEvents();//检测用户的输入
	}

	glfwTerminate();//正常结束
	return 0;
}

关于自己疑惑的一点解释:
glfw的作用:负责创建窗口,处理消息循环,通常可以替换成为其他
比如glut,freeglut 等界面库
glew的作用:在调用 opengl 相关函数时,不必每次都用 函数指针的方式,检查 机器是否支持此gl函数,不嫌麻烦的话,也可以手写函数指针,来判断各个 opengl 高版本函数是否支持,暂时不知道是否有替代物

Charlotte1号 发布了17 篇原创文章 · 获赞 21 · 访问量 1510 私信 关注

标签:其一,glfw,NULL,记录,openGL,window,GLFW,glew,include
来源: https://blog.csdn.net/weixin_45342551/article/details/104434719