OpenGl 学习文档(1)- 环境配置 mac 2020

153 阅读1分钟

环境配置:

GLFW:下载编译

  1. 地址:www.glfw.org/,首页有 src 下载
  2. 安装 CMake,brew install cmake
  3. 解压 1 的安装包
  4. 编译 libglfw3.a 产物,默认会出现在 /usr/local/lib 中
cd glfw-3.3.2
cmake .
make install

Glad:实现能力下载,OPENGL 规范的实现

  1. 按照如下配置下载 glad
  2. 下载好之后,确认文件夹和文件

配置 xcode 调试环境

  1. Xcode 选择 command line 工程

  2. 创建工程

  3. 选择工程 -> build Settings, 设置头寻找头文件和外部链接库 folder 地址,

  4. 添加三方库,Build Phrase

  • 注意,glad.c 需要一同与 source 一同编译,在 compile source 处
  • 三方的链接库要包括
    • 之前编译好的 libglfw3.a
    • OPENGL
    • IOKit
    • Cocoa 写下第一份代码
  1. 在 main.cpp 中写下如下代码
    //
//  main.cpp
//  opengllearn-new
//
//  Created by  on 2020/11/24.
//

#include <iostream>
#include <glad/glad.h>
#include <glfw3.h>
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
void processInput(GLFWwindow *window)
{
    if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
        glfwSetWindowShouldClose(window, true);
}
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height);
}


int main(int argc, const char * argv[]) {
    // glfw: initialize and configure
       // ------------------------------
       glfwInit();
       glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
       glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
       glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

   #ifdef __APPLE__
       glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
   #endif

       // glfw window creation
       // --------------------
       GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
       if (window == NULL)
       {
           std::cout << "Failed to create GLFW window" << std::endl;
           glfwTerminate();
           return -1;
       }
       glfwMakeContextCurrent(window);
       glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

       // glad: load all OpenGL function pointers
       // ---------------------------------------
       if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
       {
           std::cout << "Failed to initialize GLAD" << std::endl;
           return -1;
       }

       // render loop
       // -----------
       while (!glfwWindowShouldClose(window))
       {
           // input
           // -----
           processInput(window);

           // render
           // ------
           glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
           glClear(GL_COLOR_BUFFER_BIT);

           // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
           // -------------------------------------------------------------------------------
           glfwSwapBuffers(window);
           glfwPollEvents();
       }

       // glfw: terminate, clearing all previously allocated GLFW resources.
       // ------------------------------------------------------------------
       glfwTerminate();
       return 0;
}

  1. 编译运行,出现如下窗口说明 opengl 之旅可以正式开始了