godot 隨機(jī)地圖4 讀取shader處理后的信息
一、opengl中數(shù)據(jù)的處理方式

1、簡潔
VBO就是一塊10*10的木板
VAO就是 我要分割1*4的木板10個(gè),1*6的木板10個(gè)。
切割的時(shí)候可以
4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6;
4,6,4,6,4,6,4,6,4,6,4,6,4,6,4,6,4,6,4,6;
如果不分割,是沒法用來制作家居的。
EBO就是這些分割后的木板的組裝圖紙。
2、viewport和vertex的關(guān)系
????這只是我們上傳的頂點(diǎn)坐標(biāo),因?yàn)镺penGL的坐標(biāo)是在0~1內(nèi),(x,y)小于0.0或者大于1.0就判定超過范圍了,不給渲染了。如果要把x=2.5的拿進(jìn)來渲染,要么把它放深點(diǎn),要么把它縮小點(diǎn),要么平移攝像機(jī)到x=2.5。

????在處理vertex的時(shí)候,他會(huì)把所有的頂點(diǎn)拿去位移,和旋轉(zhuǎn),所以管線數(shù)量=vertex的數(shù)量。
到了fragment的時(shí)候,管線此時(shí)此刻變成了uv,也就是rasterization后分配的管線。但是沒有屏幕大小和需要渲染得窗口大小沒法分配。所以我們會(huì)在gpu渲染之前第一步就是告訴他我的viewport的大小為(1024*512),你的x(0~1)要映射到0~1023,y(0~1)要映射到0~511。
????明確告訴他我要有多大的RenderTarget ViewPort,他才好去把計(jì)算出來的數(shù)據(jù)blending。
????blending可以平鋪,可以拉伸(x,y,全拉伸),可以只鋪設(shè)一個(gè)。
????所以我們?nèi)绻秩疽粋€(gè)512*1的texture,我只需要傳入(0,0)(1,0)(0,0)(1,1)四個(gè)頂點(diǎn),把他的viewport設(shè)置為512*1 。
二、godot的中的實(shí)現(xiàn)
????1、創(chuàng)建viewport
????2、上傳vertex的信息
????3、運(yùn)用shader
????4、把viewport的數(shù)據(jù)導(dǎo)出來
三、我已經(jīng)被godot整得神經(jīng)質(zhì)了,稽查源碼
????發(fā)現(xiàn)noisetexture的標(biāo)志源碼

????也就是說,noisetexture會(huì)生成一個(gè)viewport,然而使用普通image就沒有。
????那么問題又來了,為啥godot.svg就可以呢!?。?!
????鬼曉得了。
????當(dāng)然也發(fā)現(xiàn)godot的有點(diǎn)

????你要給我說這是c++,我已經(jīng)感動(dòng)得落淚了。
????不搞大量枚舉,不亂用struct,
????不搞多重繼承,也不瞎吉爾命名,不用一堆指針函數(shù),
????該空行空行,結(jié)構(gòu)清晰明了,命名直觀。
????基本是就是github里面某個(gè)功能的最簡代碼直接搬過來的。
四、使用viewport
????在godot中有,所以我3天就是被tm誤導(dǎo)了。
????https://docs.godotengine.org/en/stable/tutorials/shaders/using_viewport_as_texture.html
????
????然后godot4.0告訴我要?jiǎng)?chuàng)建viewport

????godot說我已經(jīng)刪了,只有subviewport,好吧。

????然后給subviewport添加一個(gè)colorrect


然后添加material

因?yàn)閏olorect本質(zhì)類似一個(gè)mesh,而且subviewport是一個(gè)fbo。

五、從subviewport中導(dǎo)出數(shù)據(jù)
????稽查源碼得到:

????viewport要這樣得到數(shù)據(jù)

????然后在處理成image


當(dāng)然還是不行,我已經(jīng)習(xí)慣了

放在onready之后,而且改為jpg也不行。

????真沒法了,只能合理懷疑他重載了后,但是沒有寫這個(gè)功能上去。
六、只是使用screen shot來實(shí)現(xiàn)了
????1、創(chuàng)建一個(gè)buttom

????2、給他連接信號(hào)

????3、截取圖片

????4、結(jié)果
