OpenGL初学 一 (环境配置)

一、 GLFW

1、下载glfw源码

前往GLFW官网下载源码,如下图
在这里插入图片描述
在这里插入图片描述

2、使用cmake生成glfw项目工程文件
1 前往cmake官网下载,如下图

在这里插入图片描述
在这里插入图片描述
cmake安装步骤,注意:如需要添加环境变量,和创建桌面快捷方式如下图勾选,其他都默认next
在这里插入图片描述

2 生成工程文件

解压下载的glfw源码,在源码目录下新建build文件夹,打开cmake-gui,配置路径如下图
在这里插入图片描述

点击Configure选择vs的版本,我这里选择vs2019,其他默认,点击finish,如下图
在这里插入图片描述

等待Configuring done完成后,其他默认,点击Generate,如下图Generating done即可完成
在这里插入图片描述

3 编译glfw

打开build文件夹下的GLFW.sln,重新生成解决方案,成功后在src/Debug文件夹下生成glfw3.lib

4 GLAD

前往GLAD官网,配置如下图后点击Generate,下载生成glad.zip
在这里插入图片描述

5 环境准备

使用vs新建一个空工程,可以把构建号的第三方库都放在一起,方便以后其他工程使用如下图,解压glad.zip,拷贝解压后include文件夹下的glad和KHR两个文件夹到library/include文件夹下,拷贝解压后src文件夹下的glad.c文件到你的工程里,拷贝glfw源码的include文件夹下的GLFW文件夹到library/include文件夹下,把glfw3.lib拷贝到
library/lib文件夹下。如下图在这里插入图片描述
在这里插入图片描述
给新建的空工程添加包含目录和类库,如下图
在这里插入图片描述
在这里插入图片描述

6 使用glfw
#include <stdio.h>
#include <iostream>
#include "glad/glad.h"
#include "GLFW/glfw3.h"

void framebuffer_size_callback(GLFWwindow* window, int width, int height);

int main()
{
	glfwInit();
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
	//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE);   Mac OS X系统使用

	//获取GLFW版本
	int Major, Minor, Rev;
	glfwGetVersion(&Major, &Minor, &Rev);
	printf("GLFW %d.%d.%d initalized\n", Major, Minor, Rev);

	//绘制窗口对象
	GLFWwindow* window = glfwCreateWindow(800, 600, "window", NULL, NULL);
	if (window == NULL) {
		std::cout << "Failed to create GLFW window" << std::endl;
		glfwTerminate();
		return -1;
	}
	glfwMakeContextCurrent(window);

	//初始化GLAD
	if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
		std::cout << "Failed to initalize GLAD" << std::endl;
		return -1;
	}

	glViewport(0, 0, 800, 600);  //前两个参数控制窗口左下角,第三个和第四个参数控制渲染窗口的宽度和高度(像素)

	glfwSetFramebufferSizeCallback(window,framebuffer_size_callback);  //注册用户改变窗口大小的回调

	while (!glfwWindowShouldClose(window))   //glfw是否被要求退出
	{
		glfwSwapBuffers(window);  //该函数会交换颜色缓冲
		glfwPollEvents();    //检查触发事件
	}

	//渲染结束正确释放/删除之前分配的所有资源
	glfwTerminate();
	return 0;
}

void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
	glViewport(0, 0, width, height);
}
7 常见问题

error LNK2019: 无法解析的外部符号 _glfwInit,该符号在函数 _main 中被引用
检查是否有添加glfw3.lib到附加依赖项;
检查库目录中是否包含glfw3.lib的文件目录;
检查工程下图的是否和编译glfw时使用的是相同得
在这里插入图片描述

第一个 OPENGL程序...................................................................................................................4 、OPENGL的优点..........................................................................................................................4 、OPENGL的安装..........................................................................................................................4 、第一个OPENGL 程序.................................................................................................................5 点、直线和多边形..........................................................................................................................8 、点、直线和多边形.....................................................................................................................8 、在 OPENGL中指定顶点.............................................................................................................8 、绘制曲线.....................................................................................................................................9 绘制几何图形的细节....................................................................................................................14 、关于点.......................................................................................................................................14 、关于直线...................................................................................................................................14 、关于多边形...............................................................................................................................15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值