五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網 會員登陸 & 注冊

vulkan & Qt

2018-03-05 00:00 作者:AICDG  | 我要投稿

如果還堅持看這個系列文章的同學應該已經有一定的vulkan基礎了吧。不過相信大家也應該明白,glfw作為學習的庫還不錯,但是貌似用來做點東西就有些力不從心。這次就講講Qt接vulkan的方法。

Qt 5.10在版本添加了官方的vulkan支持。雖然其實舊版本Qt也能用vulkan,但是function loader,surface之類的都需要自行維護,用Qt的時候拿window的句柄也確實不太好。現(xiàn)在,終于有更high level的方法來處理這些雜事了。

對于畫三角形的方法,我不在贅述,只簡述一下Qt和glfw的不同,讓大家感受一下Qt開發(fā)vulkan到底有多簡單。

首先,Qt提供了QVulkanInstance對象,instance的方法可以用此對象直接獲取,無需手工查詢。并且QVulkanInstance提供了setLayers方法,可以簡單直接的啟用驗證層。并且順便幫大家直接設置了驗證信息向命令行輸出,可以不自己實現(xiàn)用來顯示驗證信息的callback。

接下來,創(chuàng)建一個QVulkanWindow的子類,并將QVulkanInstance示例作為參數(shù)傳給你的QVulkanWindow的子類的示例。如果你用在Qt5中使用QOpenGLWindow的經驗,你會發(fā)現(xiàn)兩者的設計思想上的高度一致。

實現(xiàn)QVulkanWindow的子類時,只要重寫createRenderer()方法即可,該方法返回一個QVulkanWindowRenderer指針。所以接下來,實現(xiàn)你的QVulkanWindowRenderer。

編寫QVulkanWindowRenderer的子類,在這個子類中,你需要重寫initResources(),initSwapChainResources(),releaseSwapChainResources(),releaseResources(),startNextFrame()這5個方法。這幾個重寫函數(shù)名是死的,不能像glfw那樣自由起,但是你能得到的是qt幫忙管理surface還有swapchain這個小福利。

順便提一下Qt的vulkan demo代碼中,各種VkXXXCreateInfo都使用如下的初始化形式:

VkXXXCreateInfo xxxInfo;

memset(&xxxInfo, 0, sizeof(xxxInfo));

但是,如果你自己開發(fā)的話,我更建議直接使用:

VkXXXCreateInfo xxxInfo = {};

的形式來完成各種Vk對象的初始化,更簡潔,也更高效。

代碼示例在:

https://github.com/THISISAGOODNAME/vulkan-tutorial-code/tree/master/QtVulkanTest

示意圖

三角形演示

自己開發(fā)的時候請使用64位的MSVC編譯器吧,直接使用release模式,debug模式不行,32位的mingw也不行。

Qt + vulkan的組合,我第一次見,就是PS3模擬器RPCS3。vulkan模式下比openGL流暢很多,真的是令人嘆為觀止。最近,lunarG發(fā)布了最新的vulkan SDK中,添加了mac的支持。至此,vulkan已經可以正式宣布,又重新跨了全平臺。相信在日后vulkan一定是一個新的風潮吧。

vulkan & Qt的評論 (共 條)

分享到微博請遵守國家法律
繁昌县| 澜沧| 赞皇县| 海安县| 宁远县| 松滋市| 读书| 通州区| 马边| 子洲县| 永寿县| 阿合奇县| 凤翔县| 石屏县| 富顺县| 淮滨县| 梁河县| 临桂县| 齐齐哈尔市| 襄城县| 翁牛特旗| 同仁县| 封开县| 固镇县| 贵港市| 大石桥市| 白朗县| 即墨市| 库尔勒市| 林西县| 宕昌县| 滕州市| 洛浦县| 鄂州市| 清原| 台北县| 江西省| 华阴市| 泸水县| 甘洛县| 军事|