• 友链

  • 首页

  • 文章归档
h u a n b l o g
h u a n b l o g

欢

HI,Friend

04月
28
其他
Shader

OpenGL环境搭建(GLEW版)

发表于 2024-04-28 • 字数统计 8033 • 被 2,222 人看爆

什么是OpneGL

Open Graphics Library (OpenGL) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

总的来说,OpenGL 就是一个应用程序接口(API),用来帮助我们与GPU交互,来使用硬件加速渲染图形。OpenGL只是一个规范,不同的显卡厂商有不同的实现,但这无关紧要,只要用起来相同就行了。值得一提的是,OpenGL 是无需下载的,系统里已经有这个库了(opengl32.lib, opengl64.lib for Windows)。建议将显卡驱动更新到最新

但是,只有 OpenGL 是不够的,原因大致有二:

  • 1.OpenGL 本身提供的 API 比较底层,不便于使用,我们需要一个更高层次的封装。
  • 2.OpenGL 并没有提供创建 context,管理窗口以及处理用户输入等机制。

安装库

需要安装:GLFW、GLEW/GLAD 
GLEW和GLAD都是一样的库,下载其中一个即可

GLFW

是专门针对OpenGL的C语言库,GLFW是一个专门用于处理窗口创建和事件循环的库,它能够兼容各种操作系统,提供了一个简单的API来处理窗口相关的操作,如创建、销毁、调整大小等。GLFW负责创建窗口、处理窗口相关的事件(如键盘和鼠标输入),并提供一个OpenGL上下文供程序使用。

GLFW官网地址

GLEW

全称OpenGL Extension Wrangler Library,是一个用于管理OpenGL扩展功能的库。由于OpenGL只有函数声明而没有实现,所以不同的显卡生产商会提供自己的实现。这就需要在编写程序时判断哪些函数是否可用,非常麻烦。而GLEW库则将这些问题简化,使得各个版本的OpenGL函数像原生函数一样可以直接调用。

GLEW官网地址

GLAD

glad是glew的升级版,专门加载OpenGL的函数指针,也可以只安装glad,无需配置glew

GLAD官网地址

其他库

OpenGL搭建_1.png

下载

GLEW

步骤一:选择官网的Binaries下载
OpenGL搭建_25.png
步骤二:跳转后,等待即可下载
OpenGL搭建_26.png

GLFW

步骤一: 选择官网的Download页面,主页是源码,需要自己编译
OpenGL搭建_2.png

步骤二: 选择对应平台: 这里选择Windows平台,选择32位(64位可能有些平台不支持)
OpenGL搭建_3.png

步骤三: 将下载的文件解压,可看到对应版本的
OpenGL搭建_4.png

GLAD

步骤一: 在官网选择对应的信息用来生成库, 最后选择右下角的Generate按钮生成库文件
OpenGL搭建_5.png

步骤二: 点击Generate后可以查看生成的库文件, 选择glad.zip进行下载
OpenGL搭建_6.png

步骤三: 将下载的文件解压,可看到和官网生成的库文件一致
OpenGL搭建_7.png

到这里OpenGL所需要的库就下载好了

配置

这里以Visual Studio2017为例,Visual Studio都差不多,其他编译器没试过,主要是将OpenGL库链接到项目中,可以分开链接(GLFW和GLAD);也可以专门一个文件夹将GLFW和GLAD的include、lib放一起(这里以该方式)

步骤一

将GLFW和GLEW的include和lib文件进行分类,当然也可以不进行分类。

GLFW的include库
GLFW文件选择include->GLFW
OpenGL搭建_27.png

GLEW的lib库
GLFW选择对应编辑器版本的lib库(这里以2022版为例)
OpenGL搭建_28.png

GLEW的include库
GLEW文件选择include->GL
OpenGL搭建_29.png

GLEW的lib库
GLEW文件选择lib->Release->Win32
OpenGL搭建_30.png

最终两个文件的include和lib库合并
OpenGL搭建_36.png

步骤二

将库文件链接到Visual Studio项目中

步骤一

创建控制台项目

OpenGL搭建_31.png
OpenGL搭建_32.png

步骤二

将OpenGL库链接到项目中,项目->属性

OpenGL搭建_33.png

步骤三

属性页:配置选"所有配置",平台选"所有平台"

OpenGL搭建_34.png

步骤四

将"include"文件链接到项目中。如果没合并(glew和glfw分开)的话,就分别链接
选:C/C++->常规->附加包含目录

OpenGL搭建_35.png
OpenGL搭建_37.png

或者也可采取相对目录

将合并的Opengl库放到当前项目下,%(AdditionalIncludeDirectories)/OpenGLlibrary/GL

OpenGL搭建_38.png

步骤五

将"lib"库链接到项目中
选:链接器->常规->附加库目录

OpenGL搭建_39.png
OpenGL搭建_40.png

或者也可采取相对目录

将合并的Opengl库放到当前项目下,%(AdditionalIncludeDirectories)/OpenGLlibrary/lib

OpenGL搭建_41.png

步骤六

选择附加依赖性
选:链接器->输入->附加依赖项->输入"opengl32.lib","glfw3.lib","glew32s.lib"

OpenGL搭建_42.png
OpenGL搭建_43.png

步骤七

以上设置选择确定和应用

步骤三

写入OpenGL代码,即创建Opengl窗口,这里以glfw代码为例

glfw窗口代码

#include <glfw3.h>      //该头文件取决于实际情况,有些是#include <GLFW/glfw3.h>

int main(void)
{
    GLFWwindow* window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

运行报错
报错:LNK2019 无法解析的外部符号 glewInit,后面有警告“X86”与目标计算机类型“X64”冲突

OpenGL搭建_44.png

将X64改成X86

OpenGL搭建_45.png

报错:LNK2019 无法解析的外部符号 __imp____glewInit

OpenGL搭建_47.png

在属性页->C/C++->预处理器->预处理器定义->加上"GLFW_STATIC"

OpenGL搭建_48.png

编译成功即可看到OpenGL窗口
OpenGL搭建_46.png

总结

  • 1.将库进行分类(include和lib),也可以不分类。
  • 2.将include链接到C/C++:项目->属性->C/C++->常规->附加包含目录(可绝对路径也可相对路径(%(AdditionalIncludeDirectories)\...\include))。
  • 2.将lib链接到链接器:项目->属性->链接器->常规->附加库目录(可绝对路径也可相对路径(%(AdditionalIncludeDirectories)\...\lib))。
  • 3.在链接器下的输入:项目->属性->链接器->输入->附加依赖项->加上opengl32.lib、glew32s.lib、glfw3.lib。
  • 4.由于GLEW是静态,需要加上GLEW_STATIC。可在项目->属性->C/C++->预处理器->预处理器定义加上;也可在引用库(#include <GL/glew.h>)的前面加上#define GLEW_STATIC。
  • 5.输入上面创建窗口代码是否能创建窗口。

参考

  • 知乎用户GZJgOP-Visual Studio 2019 配置 OpenGL
分享到:
OpenGL环境搭建(GLAD版)
常量
  • 文章目录
  • 站点概览
欢

网红 欢

你能抓到我么?

Email RSS
看爆 Top5
  • mac系统版本与Xcode版本有冲突 4,078次看爆
  • JAVA_HOME环境配置问题 3,729次看爆
  • AssetBundle使用 3,497次看爆
  • VSCode配置C++开发环境 3,256次看爆
  • Lua反射 3,132次看爆

Copyright © 2025 欢 粤ICP备2020105803号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图