1 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
沒(méi)有“簡(jiǎn)單”的方法來(lái)獲取變換后的頂點(diǎn)
一種方法是在 JavaScript 中運(yùn)行著色器本身正在執(zhí)行的相同數(shù)學(xué)運(yùn)算。
另一種方法是嘗試使用變換反饋來(lái)讓 GPU 將數(shù)學(xué)運(yùn)算的結(jié)果寫(xiě)回緩沖區(qū)。變換反饋僅在 WebGL2 中有效,在 WebGL1 中無(wú)效,此外,在 Three.js 中,至少?gòu)?r123 開(kāi)始還沒(méi)有內(nèi)置支持來(lái)幫助您。添加支持需要修改 Three.js 的源代碼,因?yàn)闉榱耸褂米儞Q反饋,您必須在編譯和鏈接著色器時(shí)調(diào)用一些函數(shù),并且據(jù)我所知, Three.js 中沒(méi)有鉤子來(lái)執(zhí)行此操作,因此您必須修改源代碼。特別是,您需要gl. transformFeedbackVaryings
在調(diào)用之前調(diào)用gl.linkProgram
,以便告訴 WebGL 您希望它寫(xiě)出哪些變量。
另一個(gè)需要注意的是,如果您需要將頂點(diǎn)值讀回 JavaScript,則需要調(diào)用gl.getBufferSubData
該函數(shù),這被認(rèn)為是很慢的。是否太慢取決于您的需求。
添加回答
舉報(bào)