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 高版本函数是否支持,暂时不知道是否有替代物

openGL学习记录(其一)openGL学习记录(其一) Charlotte1号 发布了17 篇原创文章 · 获赞 21 · 访问量 1510 私信 关注
上一篇:1281. 整数的各位积和之差


下一篇:OpenGL基础学习之二代码基本结构