OpenGL學習筆記《一》建立一個空的窗口

  最近在這個網站學習opengl的相關知識,經過寫博客的方式以加深理解。html

  首先須要搭建好環境api

  網站推薦的環境是visual studio2015 + glfw3.3 + glad,glfw能夠從這個地方下載,下載後的代碼,使用cmake生成vs工程文件,編譯靜態庫文件。而後建立空的工程,引入動態連接庫。網站裏也提到,opengl是一套繪圖標準,具體的實現跟顯卡廠商提供的驅動有關,並且每一個廠商都會有本身的擴展功能,因此假如咱們直接使用opengl的各個api,可能須要作各類兼容性判斷。因此此時,就引入了glad,幫咱們把這些複雜的判斷簡化,咱們能夠在這裏下載到最新的代碼。將glad引入到工程,就能夠進行下一步的工做了。學習

  接下來咱們建立窗口網站

  首先,咱們須要初始化opengl的環境:spa

    glfwInit();
    // config glfw
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);    

  調用glfw的初始化接口,而且聲明咱們使用的opengl版本,使用的是opengl的core profile。code

  初始化以後,咱們就能夠建立窗口了:htm

   // create window
    GLFWwindow *window = glfwCreateWindow(800, 600, "LearnOpenGL", nullptr, nullptr);if (nullptr == window) {
        std::cout << "Faild to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

    // initialize glad
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
        std::cout << "Faild to initialize GLAD" << std::endl;
        return -1;
    }

  glfwCreateWindow方法參數一爲窗口的寬度,參數二爲窗口的高度,參數三爲窗口的名字,後面兩個參數暫時能夠傳空,最後返回GLFWwindow類型的對象,在後面須要用到;對象

  glfwMakeContextCurrent 將上面建立的GLFWwindow對象設置爲當前的上下文,由於opengl是一個狀態機,須要依賴這個上下文環境;blog

  glfwSetFramebufferSizeCallback 設置一個回調,當窗口大小發生變更的時候,須要調整opengl的相關參數,以適應窗口大小變化帶來的影響;接口

  gladLoadGLLoader 則是用來初始化上文提到的glad,管理opengl的各個api。

  此時運行項目,就能夠獲得一個黑色底的窗口了,什麼也沒有,確實是空的。

相關文章
相關標籤/搜索