【OpenGL】OpenGL学习笔记-1:VS2019配置OpenGL开发环境

news2025/4/24 21:06:57

在Visual Studio 2019中可以通过手动配置库文件NuGet包管理器快速安装的方法配置OpenGL环境,详细步骤如下:

一、打开VS2019,创建新的控制台项目

在这里插入图片描述

在这里插入图片描述

二、方法一:手动配置GLEW/GLFW/GLAD库

  • GLFW是窗口管理和输入事件的基础设施,为OpenGL提供运行环境。
  • GLEW是传统的全量扩展加载器,适合维护旧项目。
  • GLAD是新一代按需加载器,以灵活性和高效性成为现代OpenGL开发的首选。

三者共同构建了OpenGL应用的底层框架,开发者需根据项目需求选择组合(如GLAD+GLFW已成为社区主流方案)

2.1 下载所需库文件

  • GLEW(OpenGL扩展加载库):从GLEW官网下载Binaries版本(如glew-2.1.0-win32.zip)。

在这里插入图片描述

在这里插入图片描述

  • GLFW(窗口管理库):从GLFW官网下载预编译的32位版本(glfw-3.x.x.bin.WIN32),避免64位可能的问题。

在这里插入图片描述
在这里插入图片描述

  • GLAD(函数指针加载库):访问GLAD在线服务,选择OpenGL版本(如3.3),生成后下载glad.zip
    在这里插入图片描述
    在这里插入图片描述

2.2 配置项目属性

将下载好的GLEW、GLFW、GLAD放在同一个文件夹下方便管理

在这里插入图片描述

2.2.1 添加include文件夹

  • 选择:项目 → 属性 → C/C++ → 常规 → 附加包含目录,添加:
    • GLFW/include
    • GLEW/include
    • GLAD/include(包含gladKHR文件夹)。

所在的完整路径,如下所示。

在这里插入图片描述

2.2.2 设置库目录

  • 项目→属性 → 链接器 → 常规 → 附加库目录,添加:
    • GLFW/lib-vc2019
    • GLEW/lib/Release/Win32

在这里插入图片描述
在这里插入图片描述

2.2.3 添加依赖项

  • 链接器 → 输入 → 附加依赖项,添加:
    • glfw3.lib
    • glew32s.lib
    • opengl32.lib

在这里插入图片描述

在这里插入图片描述

2.2.4 复制DLL文件

  • glew32s.dllglfw3.dll复制到项目生成的DebugRelease目录。

2.2.5 将 glad.c 添加到项目

  • 项目 → 源文件 → 添加 → 现有项,选择下载的 glad.c 文件。
  • 确保 glad.c 参与编译(检查其属性中是否设置为“编译为 C 代码”)

在这里插入图片描述

3 测试代码

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

int main() {
    glfwInit();
    GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL Demo", NULL, NULL);
    glfwMakeContextCurrent(window);
    gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);
    while (!glfwWindowShouldClose(window)) {
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    glfwTerminate();
    return 0;
}

若窗口成功显示,则配置完成。
在这里插入图片描述

三、方法二:使用NuGet快速安装(推荐新手)

  1. 创建新项目:同上。
  2. 安装NuGet包
    • 项目 → 管理NuGet程序包 → 搜索并安装nupengl.core
  3. 编写测试代码
    • 直接引用<GL/glut.h><GLFW/glfw3.h>,无需手动配置路径。

在这里插入图片描述

四、补充

3.1 常见问题解决

  1. 库冲突(如MSVCRT.libLIBCMT.lib冲突):
    • 项目 → 属性 → 链接器 → 输入 → 忽略特定默认库,输入MSVCRT.lib
  2. GLAD初始化失败
    • 确保gladLoadGLLoaderglfwMakeContextCurrent之后调用。
  3. 64位兼容性问题
    • 使用32位库文件,项目平台设置为Win32

3.2 其他注意事项

  • CMake配置:若项目使用CMake,需在CMakeLists.txt中添加库路径和依赖项(参考和)。
  • 显卡支持:确保显卡支持OpenGL 4.1及以上(可通过工具如GPU Caps Viewer检测)。
  • 版本一致性:所有库文件(GLEW、GLFW等)需为同一平台(32/64位)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2341945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

集结号海螺捕鱼游戏源码解析(第二篇):水浒传捕鱼模块逻辑与服务器帧同步详解

本篇将全面解构“水浒传”子游戏的服务端核心逻辑、帧同步机制、鱼群刷新规则、客户端命中表现与服务器计算之间的协同方式&#xff0c;聚焦于 C 与 Unity3D 跨端同步的真实实现过程。 一、水浒传捕鱼模块资源结构 该模块包含三部分核心目录&#xff1a; 子游戏/game_shuihuz…

【音视频】FFmpeg内存模型

FFmpeg内存模型 从现有的Packet拷贝一个新Packet的时候&#xff0c;有两种情况&#xff1a; 两个Packet的buf引用的是同一数据缓存空间&#xff0c;这时候要注意数据缓存空间的释放问题&#xff1b;两个Packet的buf引用不同的数据缓存空间&#xff0c;每个Packet都有数据缓存…

小白自学python第一天

学习python的第一天 一、常用的值类型&#xff08;先来粗略认识一下~&#xff09; 类型说明数字&#xff08;number&#xff09;包含整型&#xff08;int&#xff09;、浮点型&#xff08;float&#xff09;、复数&#xff08;complex&#xff09;、布尔&#xff08;boolean&…

手动实现LinkedList

前言 大家好&#xff0c;我是Maybe。最近在学习数据结构中的链表&#xff0c;自己手动实现了一个LinkedList。我想与大家分享一下。 思维导图 代码部分 package Constant;public class constant {public static final String INDEX_IS_WRONG"输入的下标不合法"; }p…

maven的安装与配置、IDEA集成maven

一、maven的安装与配置环境变量 maven的下载与安装&#xff0c;配置环境变量与验证【附安装包3.6.1&#xff0c;3.8.8&#xff0c;3.9.9】-CSDN博客 参考资料&#xff1a;黑马程序员 二、IDEA集成 2.1 当前工程设置 1. 打开 Maven 设置路径&#xff1a;在 IDEA 中&#xf…

Axure中继器表格:实现复杂交互设计的利器

在产品原型设计领域&#xff0c;Axure凭借其强大的元件库和交互功能&#xff0c;成为设计师们手中的得力工具。其中&#xff0c;中继器元件在表格设计方面展现出了独特的优势&#xff0c;结合动态面板等元件&#xff0c;能够打造出功能丰富、交互体验良好的表格原型。本文将深入…

前端 JavaScript 处理流式响应的坑

给使用 JavaScript 的同学提个醒&#xff01; 浏览器端处理流式响应&#xff0c;想要完美体验 请使用 Fetch API。 Axios 无法使用stream来直接处理真正的流式响应&#xff08;但 Node.js 中可以使用 stream&#xff09;&#xff0c;这与浏览器底层 HTTP 请求实现的限制有关。 …

AI Agent认知框架(ReAct、函数调用、计划与执行、自问自答、批判修正、思维链、思维树详解和对比,最后表格整理总结

以下是主流AI Agent认知框架的详细说明、对比及表格总结&#xff1a; 1. 各认知框架详解 (1) ReAct (Reasoning Action) 定义&#xff1a;结合推理&#xff08;Reasoning&#xff09;和行动&#xff08;Action&#xff09;的循环过程。核心机制&#xff1a; 模型先推理&…

搭建TypeScript单元测试环境

我们在学习TypeScript的时候如果能够搭建一个单元测试的环境&#xff0c;那写些demo会很简单&#xff0c;下面我们使用jest来搭建一个单元测试环境 Jest 是一个由 Facebook 开发并开源的 JavaScript 测试框架&#xff0c;被广泛应用于前端和 Node.js 项目的单元测试。以下是关…

第十一届机械工程、材料和自动化技术国际会议(MMEAT 2025)

重要信息 官网&#xff1a;www.mmeat.net 时间&#xff1a;2025年06月23-25日 地点&#xff1a;中国-深圳 部分展示 征稿主题 智能制造和工业自动化 复合材料与高性能材料先进制造技术 自动化机器人系统 云制造与物联网集成 精密制造技术 智能生产线优化 实时数据分析与过…

leetcode 1143. Longest Common Subsequence

目录 题目描述 第一步&#xff0c;明确并理解dp数组及下标的含义 第二步&#xff0c;分析明确并理解递推公式 第三步&#xff0c;理解dp数组如何初始化 第四步&#xff0c;理解遍历顺序 代码 题目描述 这道题和第718题的区别就是&#xff0c;本题求的是最长公共子序列的长…

stack和queue的学习

stack的介绍 stack的文档介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其底层的容器&#xff0c;…

微服务Nacos组件的介绍、安装、使用

微服务Nacos组件的介绍、安装、使用 在微服务架构日渐普及的今天&#xff0c;服务注册与配置管理成了系统架构中的关键环节。阿里巴巴开源的 Nacos&#xff08;Naming and Configuration Service&#xff09;正是解决这一问题的利器。本文将为你全面介绍 Nacos 的概念、安装方…

SpringBoot_为何需要SpringBoot?

Spring Boot 出现前的开发困境 配置繁琐 大量的 XML 配置文件 Spring 是一个非常优秀的轻量级框架&#xff0c;但其配置却是重量级的需要编写大量的 XML 配置文件或注解配置&#xff0c;使项目配置复杂且难以维护配置文件中容易出现错误&#xff0c;且排查问题困难开发过程中…

格式工厂 v5.18最新免安装绿色便携版

前言 用它来转视频的时候&#xff0c;还能顺便给那些有点小瑕疵的视频修修补补&#xff0c;保证转出来的视频质量杠杠的。更厉害的是&#xff0c;它不只是转换那么简单&#xff0c;还能帮你把PDF合并成一本小册子&#xff0c;视频也能合并成大片&#xff0c;还能随心所欲地裁剪…

MQTTX + MCP:MQTT 客户端秒变物联网 Agent

引言&#xff1a;MQTTX 与 MCP 的融合 作为最受欢迎的 MQTT 客户端工具&#xff0c;MQTTX 在 1.12.0 beta 版本中集成了模型上下文协议&#xff08;MCP&#xff09;到 Copilot AI 功能中&#xff0c;显著提升了服务能力。这一融合让 MQTTX 转变为 MCP Host&#xff08;也就是发…

快手砍掉本地生活的门槛

一场本地商家的效率革命。 作者|景行 编辑|杨舟 “两斤鸡翅根七块九&#xff0c;两盒蓝莓九块钱&#xff0c;两公斤卫生纸十四块九一提。” 这是朝阳佳惠超市&#xff0c;在快手一则普通的短视频内容。 佳惠超市在辽宁省朝阳市有22家分店&#xff0c;打开佳惠超市的相关快手…

Python基础语法3

目录 1、函数 1.1、语法格式 1.2、函数返回值 1.3、变量作用域 1.4、执行过程 1.5、链式调用 1.6、嵌套调用 1.7、函数递归 1.8、参数默认值 1.9、关键字参数 2、列表 2.1、创建列表 2.2、下标访问 2.3、切片操作 2.4、遍历列表元素 2.5、新增元素 2.6、查找元…

【AI】Windows环境安装SPAR3D单图三维重建心得

效果一览 左图为原始单个图像&#xff0c;右图为通过SPAR3D重建后的三维建模&#xff0c;可以看出效果还是不错的。 本地环境配置 系统&#xff1a;Windows 11 专业版CPU&#xff1a;i5-13400F内存&#xff1a;32GBGPU&#xff1a;RTX3060 12GBcuda&#xff1a;11.8conda&…

使用docker在manjaro linux系统上运行windows和ubuntu

因为最近项目必须要使用指定版本的solidworks和maxwell&#xff08;都只能在win系统上使用&#xff09;, 且目前的ubuntu容器是没有桌面的&#xff0c;导致我运行不了一些带图形的ros2功能。无奈之下&#xff0c;决定使用docker-compose写一下配置文件&#xff0c;彻底解决问题…