筆者最近在工作上有接觸到OpenGL的程式碼,在閱讀這些程式碼的時候,有些疑惑,所以請同事建議一些參考資料,其中最主要的是OpenGL Tutorial[1]。而在參考 Basic OpenGL 前三篇:
來實作Matrices的Translation時,發現結果與預期中不相同。問了同事之後,才知道Shader program中矩陣相乘的順序要更改才會是預期中的Translation結果。
為了說明實際情況是什麼,筆者在Windows 10上使用Code::Blocks IDE來呈現。在使用CMake來產生Code::Blocks IDE專案檔時,若發生找不到libintl-8.dll檔案,只要將下面一行
加到系統環境變數即可。接著使用Code::Blocks IDE開啟Tutorials.cbp專案檔
Tutorial 1 : Opening a window 是說明如何建地開發環境,以及單純地用Graphics Library Framework(GLFW)來建立視窗,原作者都有在程式碼裡註解說明,所以沒什麼特別注意的。
而在閱讀Tutorial 2 : The first triangle時,為了理解Screen Coordinates,筆者試著修改程式來畫出矩形,於是將
修改成
並將
改成
用來畫出由兩個三角形所組成的矩形。結果如下圖所示:
為了簡化問題的呈現,筆者將這幾個矩陣變成一個,此部分的程式碼由原本的:
變成
來看一下原本的Shader program
會跑出什什麼結果呢?
改Shader program變成下面:
此時會有什麼結果呢?
心得:矩陣相乘是有順序之分別的。
自我練習:
為了要讓矩形內的兩個三角形呈現不同顏色,於是筆者又將Tutorial 2 : The first triangle程式修改。(可從Github下載此範例)
[1] http://www.opengl-tutorial.org/
沒有留言:
張貼留言