最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

godot opengl的一些特性,方便封裝

2023-06-02 14:35 作者:damedown  | 我要投稿

就看這個(gè)


這里的本質(zhì)就是,在devicer上面按照f(shuō)ormat標(biāo)注的格式,在texture_view里面創(chuàng)建一個(gè)texturebuffer,把write_data的數(shù)據(jù)拷貝進(jìn)去。


拷貝進(jìn)去返回的結(jié)果,一個(gè)ID。

一個(gè)在管理內(nèi)存指針的的ID,就算返回device的指針,cpu也去讀不到,只是opencl和cuda把這些功能封裝了。


這時(shí)候數(shù)據(jù)已經(jīng)上傳過(guò)去了。

在device中可以訪問(wèn),不然我穿過(guò)去干嘛。

我拿到這個(gè)ID,如果想要local訪問(wèn),當(dāng)然要標(biāo)注一下。 usage_copy_from this

在device 和 local 互通的時(shí)候需要走PCIE,這時(shí)候創(chuàng)建uniform不僅僅會(huì)在會(huì)在PCIE上面分配一條路,這條路肯定會(huì)告知數(shù)據(jù)大小。

當(dāng)然我們不需要那么多操作,只需要說(shuō)明:

申請(qǐng)uniform的時(shí)候就在硬件完成很多基礎(chǔ)指令了。

接下來(lái)要告訴device,這是一個(gè)IMAGE類型的,他是rbga32還是rg8也不知道。

然后綁定到set.binding = 1 ,unifrom.set = 1

這時(shí)候就知道數(shù)據(jù)的大小和分割方式以及傳遞的類型了

在glsl里面的layout標(biāo)注了


我們得到這個(gè)消息會(huì)怎么樣。

1、uniform 初始化后再local就可以釋放掉了

2、texture view 只要沒(méi)有需要繼續(xù)綁定的texture buffer 也可以在local釋放。


那么我怎么給uniform 傳遞數(shù)據(jù)呢。

傳遞數(shù)據(jù)先傳遞 data過(guò)去,再綁定uniform,uniform再綁定到set里面。

也就是先把數(shù)據(jù)放過(guò)去,再說(shuō)這個(gè)是在哪個(gè)uniform,哪個(gè)set里面。

這樣的話,uniform?每次都要重新申請(qǐng)一次。gl會(huì)自動(dòng)幫我們覆蓋福偶去的指針,釋放掉指針被拋棄的內(nèi)容。


如下圖來(lái)自 光追https://github.com/nekotogd/Raytracing_Godot4/blob/master/BasicComputeShader/ray_tracer_simple.gd

外加上 godot 需要用 Packed float Array保存數(shù)據(jù),再用to_byte_array()轉(zhuǎn)換數(shù)據(jù),在傳遞。我們就可以寫到一起。

以后也方便復(fù)制。



我們精簡(jiǎn) 把lifegame的代碼重新整合一下。

這樣在外面之需要1行就好了。

1、關(guān)于img的操作,read_data,這個(gè)數(shù)組,我推薦放在外面,可以進(jìn)行其他操作。c++中,malloc保存就就是byte,如果不重置的話,讀取就要指針選擇范圍。所以不存在這里get_data,而且這里的img.get_data本身就是byte類型的vector。

如果是其他類型就要

var params : PackedByteArray = PackedFloat32Array([global_time]).to_byte_array()

轉(zhuǎn)化一下


2、format用完就丟,其中只需要修改usage_bites

3、上傳數(shù)據(jù),這里texture_read,一定要改成全局的。

4、uniform,用完就丟,一幀用一次,如果不更新,可以永久用,也得丟。他返回后給set注冊(cè)一下,也就丟了。

5、set也全局變量。


同理,read_texture也是一樣的操作。

再把其他的也套殼

這樣的話就簡(jiǎn)單多了

我們?cè)侔裞ompute和update分開

這樣就方便未來(lái)魔改了。

我們的ready 和 process 就很清晰了

鏈接:https://pan.baidu.com/s/1wP0yTXflxiKp0SiIDRf2_A?pwd=9897?

提取碼:9897


我在國(guó)內(nèi)用github

有一些我是人的 id 。減少開盒的可能性。

godot opengl的一些特性,方便封裝的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
永靖县| 文山县| 民和| 洮南市| 嵊州市| 漠河县| 崇礼县| 德惠市| 枣庄市| 丁青县| 旺苍县| 蛟河市| 临潭县| 锡林浩特市| 南通市| 安泽县| 马山县| 迁西县| 玉门市| 黄陵县| 绥芬河市| 五峰| 吉木乃县| 永济市| 广汉市| 桦甸市| 云和县| 洪雅县| 满洲里市| 怀仁县| 伊春市| 通州市| 彩票| 永宁县| 黎平县| 深泽县| 潢川县| 石屏县| 百色市| 阳曲县| 凤冈县|