hanxinle / ChernoOpenGL

Cherno's OpenGL系列教程源码

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cherno 系列教程代码项目仓库

当前环境

  • 主机

    版本	Windows 10 专业版
    版本号	20H2
    安装日期	2021-05-12
    操作系统内部版本	19042.1415
    体验	Windows Feature Experience Pack 120.2212.3920.0
    
    
  • IDE

    Microsoft Visual Studio Community 2022 (64 位) 版本 17.0.4
    

P2. 在VS中创建项目, 配置GLFW和OpenGL

  • 配置 GLFW

    下载转送门

    /**
     * 设置附加包含目录
     * 项目 => OpenGL属性 => C\C++ => 常规 => 附加包含目录
     * 添加: $(SolutionDir)Dependencies\GLFW\include
     * 设置附加库目录
     * 项目 => OpenGL属性 => 链接器 => 常规 => 附加库目录
     * 添加: $(SolutionDir)Dependencies\GLFW\lib-vc2022
     * 设置附加依赖项
     * 项目 => OpenGL属性 => 链接器 => 输入 => 附加依赖项
     * 添加: glfw3.lib
     ** /
  • 处理错误

    • Application.obj : error LNK2019: 无法解析的外部符号 __imp__glClear@4,函数 _main 中引用了该符号

      /**
       * 补充附加依赖项(opengl32.lib)
       * 项目 => OpenGL属性 => 链接器 => 输入 => 附加依赖项
       * 添加: opengl32.lib
       **/
    • glfw3.lib(win32_init.obj) : error LNK2019: 无法解析的外部符号 __imp__RegisterDeviceNotificationW@12,函数 __glfwPlatformInit 中引用了该符号

      /**
       * 补充附加依赖项(user32.lib)
       * 项目 => OpenGL属性 => 链接器 => 输入 => 附加依赖项
       * 添加: user32.lib
       **/
    • glfw3.lib(win32_monitor.obj) : error LNK2019: 无法解析的外部符号 __imp__CreateDCW@16,函数 __glfwPlatformGetGammaRamp 中引用了该符号

      /**
       * 补充附加依赖项(gdi32.lib)
       * 项目 => OpenGL属性 => 链接器 => 输入 => 附加依赖项
       * 添加: gdi32.lib
       **/
    • glfw3.lib(win32_window.obj) : error LNK2019: 无法解析的外部符号 __imp__DragQueryFileW@16,函数 _windowProc@16 中引用了该符号

      /**
       * 补充附加依赖项(shell32.lib)
       * 项目 => OpenGL属性 => 链接器 => 输入 => 附加依赖项
       * 添加: shell32.lib
       **/
    • LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

      /**
       * 忽略特定默认库(msvcrt.lib)
       * 项目 => OpenGL属性 => 链接器 => 输入 => 忽略特定默认库
       * 添加: msvcrt.lib
       **/
  • 当前附加依赖库 glfw3.lib;opengl32.lib;user32.lib;gdi32.lib;shell32.lib

P3. 配置GLEW

下载传送门

  /**
   * 设置附加包含目录
   * 项目 => OpenGL属性 => C\C++ => 常规 => 附加包含目录
   * 添加: $(SolutionDir)Dependencies\GLEW\include
   * 设置附加库目录
   * 项目 => OpenGL属性 => 链接器 => 常规 => 附加库目录
   * 添加: $(SolutionDir)Dependencies\GLEW\lib\Release\Win32
   * 设置附加依赖项
   * 项目 => OpenGL属性 => 链接器 => 输入 => 附加依赖项
   * 添加: glew32s.lib
   *
   * 设置预处理器定义
   * 项目 => OpenGL属性 => C\C++ => 预处理器 => 预处理器定义
   * 添加: GLEW_STATIC
   ** /
  • 错误处理

    • fatal error C1189: #error: gl.h included before glew.h

      /**
       * 交换glew.h和glfw3.h的包含顺序
       **/
    • Application.obj : error LNK2019: 无法解析的外部符号 __imp__glewInit@0,函数 _main 中引用了该符号

      /**
       * 添加预处理器定义
       * 项目 => OpenGL属性 => C\C++ => 预处理器 => 预处理器定义
       * 添加: GLEW_STATIC
       **/
    • LINK : warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

      /**
       * 忽略特定默认库(libcmt.lib)
       * 项目 => OpenGL属性 => 链接器 => 输入 => 忽略特定默认库
       * 添加: libcmt.lib
       **/
    • glew32s.lib(glew.obj) : warning LNK4099: 未找到 PDB“vc120.pdb”(使用glew32s.lib(glew.obj)

      /**
       * 关闭生成调试信息
       * 项目 => OpenGL属性 => 链接器 => 调试 => 生成调试信息(否, 默认值: 生成调试信息 (/DEBUG))
       **/
  • 切换NIVDIA显卡

    /**
     * NVIDIA控制面板 => 管理3D设置 => 程序设置 => 添加(选择VS)
     * NVIDIA控制面板 => 管理3D设置 => 全局设置 => 首先图形处理器(选择高性能NVIDIA处理器)
     * glGetString(GL_VERSION)输出: 4.6.0 NVIDIA 471.41
     * 默认显卡(Inter)时输出: 4.6.0 - Build 26.20.100.8141
     *
     * 可在 计算机 => 属性 => 设备管理器 => 显示适配器 查看当前支持的显卡
     **/

About

Cherno's OpenGL系列教程源码


Languages

Language:C++ 95.6%Language:GLSL 4.4%