opengl开发环境搭建:vs2017+glew+glfw

glfw
https://www.glfw.org/download.html

主要体提供窗口服务,opengl在里面绘图

opengl开发环境搭建:vs2017+glew+glfw

glew
http://glew.sourceforge.net/

在调用 opengl 相关函数时,不必每次都用 函数指针的方式,检查 机器是否支持 此 gl  函数

opengl开发环境搭建:vs2017+glew+glfw

 

opengl

vs2017中自带opengl库,不过是1.1版本的,使用了glew之后会检查gl函数。具体有什么扩展功能,没研究过

 

glfw和glew都提供源码编译服务,不过我图方便,直接下载的Binary包,下载后是zip文件,解压后放到一个地方,比如E盘根目录

 

vs2017配置:

设置包含目录和库目录

opengl开发环境搭建:vs2017+glew+glfw

包含目录好说:就是两个库的include

库目录:glfw的库目录有好多个,这里选择最接近vs2017的lib-vc2015目录

freetype是拿文字当纹理,现在用不上,

soil是拿图片当纹理用的,现在也用不上

设置好目录后就可以编写一个简单的opengl程序了。

#include <iostream>
#include <Windows.h>

// GLEW    
#include <GL/glew.h>    

// GLFW 
#include <GLFW/glfw3.h>   

GLuint WIDTH = 400, HEIGHT = 400;

int main()
{
	glfwInit();

	GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT, "OpenGL", nullptr, nullptr);
	if (window == nullptr)
	{
		std::cout << "Failed to create GLFW window" << std::endl;
		glfwTerminate();
		return -1;
	}

	glfwMakeContextCurrent(window);

	if (glewInit() != GLEW_OK)
	{
		std::cout << "Failed to initialize GLEW" << std::endl;
		return -1;
	}

	glViewport(0, 0, WIDTH, HEIGHT);

	// 渲染loop   
	while (!glfwWindowShouldClose(window))
	{
		glfwPollEvents();//通知处理窗口事件,注释掉的话,窗口可能会卡住
		glClearColor(1.0f, 0.8f, 1.0f, 1.0f);//指定一种颜色清屏
		glClear(GL_COLOR_BUFFER_BIT);//清屏
		glColor4b(99, 38, 13, 90);//设定下面要绘制的的RGBA颜色b(0-100), f(0.0-1.0)

		glBegin(GL_LINES);//显示一组之弦断,其端点坐标在glVertex函数中指定

		glVertex2f(0, 0);//指定第一个点
		glVertex2f(-0.80, 0.8);//指定第二个点

		glEnd();//结束

		glfwSwapBuffers(window);//是opengl绘制的图形显示在窗口上
	}

  
	glfwTerminate();//窗口结束
	return 0;
}

效果:

opengl开发环境搭建:vs2017+glew+glfw

以上是简单的代码,没有封装性

绘图代码在while循环中,主要任务是:清屏、绘图、显示

 

小贴士:

编译报错:

warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;使用 /NODEFAULTLIB:msvcrt.lib

处理方式:

【项目】->【属性】->【配置属性】->【连接器】->【输入】->【忽略指定库】,输入:msvcrt.lib