RenderCollision無論我怎么努力,我都無法上班。檔案說:
RenderCollision (view_id: int, vtx_layout: VertexLayout, prg: ProgramHandle, render_state: RenderState, depth: int) -> None
這是我對我應該作為引數傳遞給這個函式的(有限的)理解:
view_id: 可以設定為 0 到 255,根據檔案。在我的情況下,它是 0vtx_layout: 存盤 3D 線的頂點布局ProgramHandle:繪制 3D 線所需的程式(著色器)RenderState:我應該提供的東西ComputeRenderState(在這里找到)depth:我猜是相對于zDepth的東西?
在這一點上,我覺得我離正確使用它不遠了,但是我很難弄清楚RenderState的事情。以前有人去過嗎?
uj5u.com熱心網友回復:
RenderCollision是一個除錯函式,所以它不會“消耗”任何 view_id。實際上,您可以將 view_id 傳遞給它,它將寫入當前視圖。
vtx_layout和prg就像你猜到的那樣,處理除錯線的渲染(RenderCollision 使用線條來繪制碰撞形狀)。
它通常以這種方式作業:
繪制除錯資訊時避免清除視圖
hg.SetViewClear(view_id, hg.CF_None, 0, 1.0, 0)
設定當前視圖的矩形(與您的主渲染相同)
hg.SetViewRect(view_id, 0, 0, screen_size_x, screen_size_y)
設定相機變換矩陣(和你當前的相機一樣)
hg.SetViewTransform(view_id, view_matrix, projection_matrix)
這是您可能正在查看的:BM_Opaque將讓 Harfang 知道您要在渲染管道中具體繪制的位置:
render_state = hg.ComputeRenderState(hg.BM_Opaque, hg.DT_Disabled, hg.FC_Disabled)
將繪制碰撞形狀的最終指令:
physics.RenderCollision(view_id, vtx_line_layout, line_shader, render_state , 0)
你會在這里找到一個作業示例,我希望它會有所幫助: https ://github.com/harfang3d/tutorials-hg2/blob/master/physics_overrides_matrix.py#L69
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/515408.html
標籤:Python调试物理子弹
上一篇:v3擴展沒有DevTools斷點?(顯然是進口問題)
下一篇:我該如何解決這個do\while和switch\case回圈。switchcaseTestSatisfactory中方法的輸出
