如何设置和使用 OpenGL

how to setup and use openGL?

本文关键字:OpenGL 设置 何设置      更新时间:2023-10-16

我使用mingW来编译c ++代码。 我想使用openGL制作图形。我使用记事本++编写代码。那么如何使用openGL的库呢?

在MinGW中,您不必设置OpenGL。目录中已经有OpenGL库:\~\MinGW\include\GL。只需包含 GL/gl.h 和 GL/glu.h,即可为您的 OpenGL 项目编写代码。但是,如果您正在寻找GLUT,GLFW,glew或其他库,那么使用IDE是更好的解决方案,例如code::blocks或Visual Studio,然后做谷歌为您的IDE设置这些库。

一旦你编译了OpenGL项目,并且可能想知道下一步该做什么,NeHe有一系列很棒的OpenGL教程: http://nehe.gamedev.net/

从内存来看,它们都与即时模式(v3.0 之前)有关,但这是一个很好的起点 - 特别是如果您出于许可原因不想使用其他库(如 GLUT

)。

这里还有一个很好的教程列表:

http://www.opengl.org/wiki/Getting_Started#Tutorials_and_How_To_Guides

顺便说一下,您可以免费下载Visual C++的Express版。 以防万一您只是因为成本而避免使用Microsoft编译器:http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express

这只是专业版的削减版。 基本上它没有OpenMP,MFC或ATL,一些更高级的调试工具,并且不会编译64位应用程序。 但除此之外,这很棒。 我唯一会因为没有 64 位和 OpenMP 而感到不安。 但它是免费的! 功能比较在这里: http://msdn.microsoft.com/en-us/library/hs24szh9.aspx

OpenGL 文本编辑器/无 IDE 友好

在记事本,记事本++,VS代码,Vim等中编写.cpp文件后。

您可以使用以下命令编译.cpp文件并使用 MinGW 在命令行上生成可执行文件。

g++ ./main.cpp -o./main

链接所有Opengl项目的文件和库可以快速将命令行变成这样

g++ /path/main.cpp /path/another.cpp... -I/path/includedlibirary... -L/path/headers... -lglfw3 -lopengl32 -lglu32 -lgdi32 -o/path/output_executable

IMG:在命令行中最终是什么样

而不是在每次编译之前键入类似的怪物

我会使用一个 Makefile 并将其添加到与您的项目相同的目录中。然后使用以下命令编译生成文件。

mingw32-make

生成文件

  • 充当批处理脚本
  • 类似于代码块或Visual Studio中的链接器:将文件和库链接到编译器
  • 可以告诉编译器将可执行文件输出到哪里.exe

IMG:OpenGL项目目录示例

注意:文件路径基于我的设置和项目的设置

示例生成文件:

    # Created Libraries directory in C: to store downloaded libraries 
    glfw_include = C:LibrariesGLFWinclude
    glfw_lib = C:LibrariesGLFWlib
    
    glad_include = C:LibrariesGLADinclude
    glad_src =  C:LibrariesGLADsrcglad.c
    
    stb_include = C:LibrariesSTBinclude
    stb_src = C:LibrariesSTBsrcstb.cpp
    
    glm_include = C:LibrariesGLMinclude
    
    json_include = C:LibrariesJSONinclude
    
    # Project's local header files
    local_include = ./Header
    # Project's local cpp files
    local_src = ./Source/shaders_class.cpp ./Source/textures_class.cpp ./Source/camera_class.cpp ./Source/meshes_class.cpp ./Source/model_class.cpp ./Source/shaders_EBO.cpp ./Source/shaders_VAO.cpp ./Source/shaders_VBO.cpp
    
    
    
    ################################################################################################################################################################################################################################
    
    
    CXX = g++
    CPP = ./Source/main.cpp
    TARGET = ./Bin/main
    
    
    OBJECTS = $(CPP) $(glad_src) $(stb_src) $(local_src)
    INCLUDES = -I$(glfw_include) -I$(glad_include) -I$(stb_include) -I$(glm_include) -I$(json_include) -I$(local_include) 
    LIBRARIES = -L$(glfw_lib)
    
    
    C_FLAGS = $(INCLUDES)
    LD_FLAGS = $(LIBRARIES) -lglfw3 -lopengl32 -lglu32 -lgdi32
    
    
    $(TARGET): $(CPP) # Final Output
    # Puts everything together in string that auto runs on command line
    # '''Ex: g++ <cpp files> -I<included> -L<header_files> -lglfw3 -lopengl32 -lglu32 -lgdi32 -o<output executable>'''
        $(CXX) $(OBJECTS) $(C_FLAGS) $(LD_FLAGS) -o$(TARGET)

生成文件的示例输出

g++ ./Source/main.cpp C:LibrariesGLADsrcglad.c C:LibrariesSTBsrcstb.cpp ./Source/shaders_class.cpp ./Source/textures_class.cpp ./Source/camera_class.cpp ./Source/meshes_class.cpp ./Source/model_class.cpp ./Source/shaders_EBO.cpp ./Source/shaders_VAO.cpp ./Source/shaders_VBO.cpp -IC:LibrariesGLFWinclude -IC:LibrariesGLADinclude -IC:LibrariesSTBinclude -IC:LibrariesGLMinclude -IC:LibrariesJSONinclude -I./Header  -LC:LibrariesGLFWlib -lglfw3 -lopengl32 -lglu32 -lgdi32 -o./Bin/main

贷方:

推荐将文件链接到 MinGW/创建制作文件

  • 声纳系统:SDL 2 教程 1c [设置] Windows 和 MinGW 安装程序https://www.youtube.com/watch?v=ybYMOKEW9IY&t=15s

推荐 OpenGL 简介

  • Victor Gordan: OpenGL Tutorialshttps://www.youtube.com/playlist?list=PLPaoO-vpZnumdcb4tZc4x5Q-v7CkrQ6M-