OpenGL 入門筆記

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

筆者最近在工作上有接觸到OpenGL的程式碼,在閱讀這些程式碼的時候,有些疑惑,所以請同事建議一些參考資料,其中最主要的是OpenGL Tutorial[1]。而在參考 Basic OpenGL 前三篇:

來實作Matrices的Translation時,發現結果與預期中不相同。問了同事之後,才知道Shader program中矩陣相乘的順序要更改才會是預期中的Translation結果。

為了說明實際情況是什麼,筆者在Windows 10上使用Code::Blocks IDE來呈現。在使用CMake來產生Code::Blocks IDE專案檔時,若發生找不到libintl-8.dll檔案,只要將下面一行

C:\Program Files (x86)\CodeBlocks\MinGW\bin
加到系統環境變數即可。接著使用Code::Blocks IDE開啟Tutorials.cbp專案檔

Tutorial 1 : Opening a window 是說明如何建地開發環境,以及單純地用Graphics Library Framework(GLFW)來建立視窗,原作者都有在程式碼裡註解說明,所以沒什麼特別注意的。

而在閱讀Tutorial 2 : The first triangle時,為了理解Screen Coordinates,筆者試著修改程式來畫出矩形,於是將
修改成

並將

改成
用來畫出由兩個三角形所組成的矩形。結果如下圖所示:


Tutorial 3 : Matrices得知,會有幾個矩陣在做轉換的動作(下圖出自Tutorial 3 : Matrices):

為了簡化問題的呈現,筆者將這幾個矩陣變成一個,此部分的程式碼由原本的:

變成

來看一下原本的Shader program
會跑出什什麼結果呢?

改Shader program變成下面:




此時會有什麼結果呢?




心得:矩陣相乘是有順序之分別的。


自我練習:
為了要讓矩形內的兩個三角形呈現不同顏色,於是筆者又將Tutorial 2 : The first triangle程式修改。(可從Github下載此範例)


參考資料:
[1] http://www.opengl-tutorial.org/

沒有留言: