原创 Learn OpenGL with Qt——加載3D模型

模型 現在是時候着手啓用Assimp,並開始創建實際的加載和轉換代碼了。我們重新創建一個項目,回憶一下是否還能想起如何創建opengl窗口? ——創建新項目(ModelLoading) ——以QWidget爲基類,取消勾選創建界面 ——修

原创 Learn OpenGL with Qt——模型加載:Qt搭建Assimp環境

Assimp 到目前爲止,我們已經在所有的場景中大面積濫用了我們的容器盒小盆友,但就是容器盒是我們的好朋友,時間久了我們也會喜新厭舊。一些圖形應用裏經常會使用很多複雜且好玩兒的模型,它們看起來比靜態的容器盒可愛多了。但是,我們無法像定義容

原创 Learn OpenGL with Qt——投光物

投光物 我們目前使用的光照都來自於空間中的一個點。它能給我們不錯的效果,但現實世界中,我們有很多種類的光照,每種的表現都不同。將光投射(Cast)到物體的光源叫做投光物(Light Caster)。在這一節中,我們將會討論幾種不同類型的投

原创 Learn OpenGL with Qt——光照貼圖

光照貼圖 在上一節中,我們討論了讓每個物體都擁有自己獨特的材質從而對光照做出不同的反應的方法。這樣子能夠很容易在一個光照的場景中給每個物體一個獨特的外觀,但是這仍不能對一個物體的視覺輸出提供足夠多的靈活性。 在上一節中,我們將整個物體的材

原创 Learn OpenGL with Qt——材質

如果你是中途開始學習本教程的,即使你對OpenGL已經非常熟悉,請至少了解以下幾個章節,因爲Qt中提供了OpenGL的很多便捷操作,熟悉這些操作可以讓我們在Qt中高效的使用OpenGL進行繪圖。 創建OpenGL窗口 着色器程序以及着色器

原创 Learn OpenGL with Qt——模板測試

由於被這節的標題和內容吸引,先完成了這節的代碼,具體教程等之前的教程更新之後再做 widget.h #ifndef WIDGET_H #define WIDGET_H #include "camera.h" #include <QO

原创 Learn OpenGL with Qt——基礎光照

基礎光照 現實世界的光照是極其複雜的,而且會受到諸多因素的影響,這是我們有限的計算能力所無法模擬的。因此OpenGL的光照使用的是簡化的模型,對現實的情況進行近似,這樣處理起來會更容易一些,而且看起來也差不多一樣。這些光照模型都是基於我們

原创 learn OpenGL with Qt——顏色

顏色、 在前面的教程中我們已經簡要提到過該如何在OpenGL中使用顏色(Color),但是我們至今所接觸到的都是很淺層的知識。本節我們將會更深入地討論什麼是顏色,並且還會爲接下來的光照(Lighting)教程創建一個場景。 現實世界中有無

原创 Learn OpenGL with Qt——攝像機

爲了出這一節教程,頭髮又少了幾根T.T 本節相對於GLFW窗口,對Qt窗口需要做兩個優化。 消除Qt窗口通過鍵盤移動的卡頓 實現鼠標鎖定到窗口並隱藏鼠標 攝像機 前面的教程中我們討論了觀察矩陣以及如何使用觀察矩陣移動場景(我們向後移動了一

原创 Learn OpenGL with Qt——座標系統

座標系統 在上一個教程中,我們學習瞭如何有效地利用矩陣的變換來對所有頂點進行變換。OpenGL希望在每次頂點着色器運行後,我們可見的所有頂點都爲標準化設備座標(Normalized Device Coordinate, NDC)。也就是說

原创 Learn OpenGL with Qt——變換

變換 儘管我們現在已經知道了如何創建一個物體、着色、加入紋理,給它們一些細節的表現,但因爲它們都還是靜態的物體,仍是不夠有趣。我們可以嘗試着在每一幀改變物體的頂點並且重配置緩衝區從而使它們移動,但這太繁瑣了,而且會消耗很多的處理時間。我們

原创 Learn OpenGL with Qt——紋理

爲什麼要使用Qt來做openGL開發? Qt內嵌了opengl的相關環境,不需要我們自己來搭建,這對小白來說是很友好的。 Qt和opengl都具有優良的跨平臺特性,使用Qt做opengl開發可謂是強強聯合。 Qt可以輕鬆的控制窗口的各種處

原创 Learn OpenGL with Qt——着色器

在上一節教程中提到,着色器(Shader)是運行在GPU上的小程序。這些小程序爲圖形渲染管線的某個特定部分而運行。從基本意義上來說,着色器只是一種把輸入轉化爲輸出的程序。着色器也是一種非常獨立的程序,因爲它們之間不能相互通信;它們之間唯一

原创 Learn OpenGL with Qt——OpenGL簡述

這個教程將完全使用Qt對openglAPI的C++封裝,內容板塊儘量與learnopengl保持一致,筆者會增加一些自己的理解,如果什麼地方存在問題,希望朋友們能夠詳細指出。 OpenGL簡述 在開始這段旅程之前我們先了解一下OpenGL

原创 Learn OpenGL with Qt——你好,三角形

這個教程將完全使用Qt對openglAPI的C++封裝,內容板塊儘量與learnopengl保持一致,筆者會增加一些自己的理解,如果什麼地方存在問題,希望朋友們能夠詳細指出。 你好,三角形 在OpenGL中,任何事物都在3D空間中,而屏幕