opengl开发环境搭建:vs2017+glew+glfw
glfw
https://www.glfw.org/download.html
主要体提供窗口服务,opengl在里面绘图
glew
http://glew.sourceforge.net/
在调用 opengl 相关函数时,不必每次都用 函数指针的方式,检查 机器是否支持 此 gl 函数
opengl
vs2017中自带opengl库,不过是1.1版本的,使用了glew之后会检查gl函数。具体有什么扩展功能,没研究过
glfw和glew都提供源码编译服务,不过我图方便,直接下载的Binary包,下载后是zip文件,解压后放到一个地方,比如E盘根目录
vs2017配置:
设置包含目录和库目录
包含目录好说:就是两个库的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;
}
效果:
以上是简单的代码,没有封装性
绘图代码在while循环中,主要任务是:清屏、绘图、显示
小贴士:
编译报错:
warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;使用 /NODEFAULTLIB:msvcrt.lib
处理方式:
【项目】->【属性】->【配置属性】->【连接器】->【输入】->【忽略指定库】,输入:msvcrt.lib