Windows VS下配置opengl环境

目录

1.下载GLFW

2. 新建工程

3. 测试GLFW

 4. 下载GLEW

5.配置工程

6.测试GLEW


1.下载GLFW

GLFW是一个轻量级的,开源的,跨平台的library。支持OpenGL及OpenGL ES,用来管理窗口,读取输入,处理事件等。

链接Download | GLFW

选择64-bit Windows或32-bit Windows

 解压

2. 新建工程

打开Visual Studio,新建一个空项目

将glfw-3.3.8.bin.WIN64(或glfw-3.3.8.bin.WIN32)文件夹中的include和一个库文件夹复制到工程文件夹下,我这里库文件夹选择lib-vc2017

将头文件和库复制到工程后,准备配置

右键后选择属性

 64位工程如下,链接静态库(32位工程类似),目录以自己实际目录为准

 

 

3. 测试GLFW

#include <GLFW/glfw3.h>

int main(void)
{
	GLFWwindow* window;
	//初始化glfw库
	if (!glfwInit())  return -1;
	//创建窗口模式窗口及其OpenGL上下文
	window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
	if (!window)
	{
		glfwTerminate();
		return -1;
	}
	//使窗口的上下文成为当前上下文
	glfwMakeContextCurrent(window);
	//循环直到用户关闭窗口
	while (!glfwWindowShouldClose(window))
	{
		//在此处渲染
        //(下面的渲染方法不是现在opengl渲染方法,这是遗留的旧opengl渲染)
		glClear(GL_COLOR_BUFFER_BIT);
		glBegin(GL_TRIANGLES);
		glVertex2f(-0.5, -0.5);
		glVertex2f(0.0, 0.5);
		glVertex2f(0.5, -0.5);
		glEnd();
		//交换前缓冲区和后缓冲区
		glfwSwapBuffers(window);
		//轮询并处理事件
		glfwPollEvents();
	}
	//渲染终止并释放错误回调
	glfwTerminate();
	return 0;
}

运行通过,结果如下图

 4. 下载GLEW

不同的显卡公司会发布一些只有自家显卡才支持的扩展函数,你要想用这些函数,不得不去寻找最新的glext.h,有了GLEW扩展库,你就再也不用为找不到函数的接口而烦恼,因为GLEW能自动识别你的平台所支持的全部OpenGL高级扩展函数。也就是说,只要包含一个glew.h头文件,你就能使用gl,glu,glext,wgl,glx的全部函数。

下载链接

GLEW: The OpenGL Extension Wrangler Library (sourceforge.net)

选择64-bit Windows或32-bit Windows

5.配置工程

与上面类似,将下载的include和64位(32位)库剪切到工程目录中

 右键后选择属性,将include目录写入附加包含目录

 

 给出链接库目录

添加附加依赖项,链接静态库

 注意:链接静态库后,需要在编译预处理宏定义 GLEW_STATIC

同时glew需要在glfw之前包含

#define GLEW_STATIC//GLEW静态库编译预处理
#include <GL/glew.h>
#include <GLFW/glfw3.h>

 当然,编译预处理宏定义 GLEW_STATIC也可以这样给

6.测试GLEW

 在上面测试代码后,添加了GLEW部分,下面的渲染管线采用默认的

#define GLEW_STATIC//GLEW静态库编译预处理
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>

const float vertices_data[6] = {
	-0.5, -0.5,
	0.0, 0.5,
	0.5, -0.5
};

int main(void)
{
	GLFWwindow* window;
	//![1]初始化glfw库
	if (!glfwInit())  return -1;
	//![2]创建窗口模式窗口及其OpenGL上下文
	window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
	if (!window)
	{
		glfwTerminate();//渲染终止并释放错误回调
		return -1;
	}
	//![3]使窗口的上下文成为当前上下文
	glfwMakeContextCurrent(window);
	//![4]初始化glew,需要首先有上下文环境才能GLEW_OK
	if (glewInit() != GLEW_OK)  return -1;
	std::cout << "GL_VERSION: " << glGetString(GL_VERSION) << std::endl;//版本号
	//初始化
	glClearColor(0.2f, 0.3f, 0.3f, 1.0f);//设置清除颜色
	//glEnable(GL_DEPTH_TEST);//启动深度缓冲区
	//创建VAO&VBO对象
	unsigned int VAO, VBO;
	glGenVertexArrays(1, &VAO);
	glGenBuffers(1, &VBO);
	//绑定VAO&VBO对象(先绑VAO)
	glBindVertexArray(VAO);
	glBindBuffer(GL_ARRAY_BUFFER, VBO);//ARRAY数组buffer
	//写入显存buffer
	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices_data), vertices_data, GL_STATIC_DRAW);//STATIC静态数据存储
	//解析数据
	glEnableVertexAttribArray(0);//启用0供着色器读取
	glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0);
	//解绑VAO&VBO对象(后放VAO)
	glBindBuffer(GL_ARRAY_BUFFER, 0);
	glBindVertexArray(0);

	//![5]循环直到用户关闭窗口
	while (!glfwWindowShouldClose(window))
	{
		//在此处渲染
		//清理
		glClear(GL_COLOR_BUFFER_BIT);//清除上一帧
		//绑定VAO记录的信息
		glBindVertexArray(VAO);
		//绘制
		glDrawArrays(GL_TRIANGLES, 0, 3);//以每三个顶点绘制一个三角形
		//交换前后缓冲并轮询处理事件
		glfwSwapBuffers(window);
		glfwPollEvents();
	}
	//![6]释放
	glfwTerminate();//渲染终止并释放错误回调
	return 0;
}

 运行通过,结果如下图

 

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值