Qt 3D的研究(二)

2021-08-29 18:30:14 字數 1561 閱讀 8004

qt 3d的研究(二)

**@研究了多日的qt 3d,我了解到為了適應跨平台、不同的著色器編譯器標準、多重渲染目標,qt 3d提出了很多的方案,創新了許多的概念,這多多少少讓初學者感到困難重重。在與qt開發者經過jira以及irc等交流後,我了解到了如何使用qt 3d構建乙個簡單的程式。

這個程式呢,雖然說簡單,但是是qt 3d中精簡的最少**了。讓我們首先看看main.qml。

import

qt3d 2.0

importqt3d

.render 2.0

entity

}

}

接下來介紹一下qt 3d的framegraph,前段時間我為了深入研究qtquick的渲染,曾經研究了qt的scenegraph框架。後面發現在scenegraph下進行渲染,還是有種種限制,無法更好地渲染出漂亮的3d圖形出來。於是,我開始離開scene graph,轉向使用原生opengl進行渲染,以及開始接觸qt3d的framegraph。在介紹qt3d的英文部落格中,作者更是說明,scenegraph能讓我們用資料驅動的方式告訴我們要渲染什麼東西,而frame graph能讓我們用資料驅動的方式告訴我們怎樣渲染。這是乙個比較大,也比較難的轉變。嘗試做乙個qt 3d框架的人都有此感。想要擁有乙個什麼都可以configurable(可配置)的框架,自己製作起來是多麼難。framegraph,則是告訴底層渲染器,我們需要怎樣渲染,效果是怎麼樣的。在framegraph中,只有forwardrenderer,告訴我們按照普通前向渲染的方式進行。裡面我們指定了乙個重新整理的顏色。估計是採用glclearcolor這個api指定的吧。

接下來我們轉向c++。c++這邊也和普通的quick程式不一樣了。

#include#include#include#include

#include

int

main(int argc, char *argv)

當然,作為qt 3d的核心,qt 3d必須要乙個視窗來顯示。qt3d自己封裝了乙個視窗,名叫qt3d::window,它也不繼承qquickwindow,而是繼承它的父類qwindow。目前window的資訊,還是需要顯式寫入引擎的data中。最後引擎設定一下qml檔案,接下來設定一下視窗大小和方位就可以正常顯示了。

程式的截圖如下所示:

雖然不是那麼激動人心,但是這的確是能執行qt 3d程式最少的**了。

overview of qt3d 2.0 –part 1

overview of qt3d 2.0 –part 2

QT 3D 學習筆記(二)建立3D視窗

環境搭建完成我們所要做的當然就是開始我們的3d歷程。做過3d的朋友,應該會熟悉一樣東西,那就是opengl 不過本人對其知之甚少 這個東西就好比c在各種語言中的地位一樣。很多朋友有做個c 下做3d的,但是我這裡用的是qml。當然熟悉qt的朋友會了解到這個,大道同歸。首先我們來看看我們是如何建立視窗的...

QT3D學習之路02

本章節用來記錄我在學習qt3d的過程中遇到的一些不懂的3d相關,qt程式設計相關的詞彙呀,概念呀什麼的。看到一條資訊 qt 3d studio 1.0在2017.11.30發布了,有空可以去搞搞 qt 3d概念 渲染,網格,幾何,材料,陰影,光線遮蔽,多材質,統一快取物件,ecs。qt3d的ecs ...

qt3d中基於opengles編寫shader

專案需要基於嵌入式的板子上載入三維模型並實現特定的效果 首先,qt3d是第一選擇,在window系統上實現了相應的功能,然而進行交叉編譯時,出現問題了 原因是嵌入式的板子顯示卡支援的是opengles2.0,而在window上使用的opengl 因此,需要做一些必要的修改,經過幾天工作後,發現需要注...