我想用GL_LINE_STRIP
繪製平截體體。這些圓錐頂點的座標是什麼?我有模型視圖和投影矩陣。是否有可能使用這些矩陣計算着色器本身的座標?如何在opengl中繪製平截頭體
回答
如果您想爲平截頭角的世界空間座標,您需要做的就是投射NDC空間中的8個角點(每個角度從-1到1,因此角點很容易枚舉)回到世界空間。但是,不要忘記,你必須w
劃分:
c_world = inverse(projection * view) * vec4(c_ncd, 1);
c_world = c_world*1.0/c_world.w;
雖然我寫這在GLSL語法,這意味着僅僞代碼。你可以用可以在着色器中做,但這意味着它必須被多次計算(取決於你把它放在哪個着色器階段)。至少預先計算CPU上的反轉矩陣通常要快得多。
你能解釋你的答案嗎? – debonair
@debonair:你在NDC空間(這是'vec4(clip_space.xyz/clip_space.w,1.0/clip_space.w)')的視角的角落都是** - 1 **和** 1的組合**。對於3維,您需要使用** - 1 **和** 1 **的2^3 = 8個組合來查找NDC中的所有角落。一旦你有了,乘以你的逆向投影矩陣來獲得剪輯空間和逆向視圖矩陣以達到世界空間(可以像derhass所展示的那樣組合成一個單獨的步驟)。順便說一句,用'w'劃分是產生平截頭體形狀的東西 - 如果你把它留下來,你就有一個立方體。 –
@debonair:我在那個評論中犯了一個錯字,但是這個想法是一樣的......逆向投影矩陣會帶你到視圖空間(從剪輯空間開始)。你實際上會跳過那個座標空間,所以它並不重要,但我可以更正確地說:P –
- 1. OpenGL/GLM - 計算平截頭體問題
- 2. 如何在OpenGL中繪製立方體?
- 3. 在iphone中設置平截頭體
- 4. 在opengl中繪製一個箭頭ES
- 5. 邊界框平截頭體渲染 - 距離渲染 - OpenGL
- 6. 如何用OPENGL庫繪製球體?
- 7. 確定點是否在平截頭體
- 8. 在Opengl中繪製橢圓球體
- 9. 在OpenGL ES中繪製球體
- 10. 在OpenGL中繪製很多球體
- 11. openGL:無法在鏡頭前正確繪製球體
- 12. OpenGL ES:繪製小物體
- 13. OpenGL VBOs:繪製球體
- 14. 用Opengl繪製球體
- 15. 如何在OpenGL中截屏
- 16. 如何在openGL中繪製背景
- 17. 如何在OpenGL中繪製3D矢量?
- 18. 如何在OpenGl中繪製線條?
- 19. 如何在OpenGL中繪製弧線
- 20. 如何在Linux中繪製OpenGL ES?
- 21. 如何在opengl中繪製線框球體
- 22. OpenGL:如何在OpenTK中繪製立方體?
- 23. 如何在OpenGL中繪製多個立方體
- 24. 如何在OpenGL 3.1+中繪製位圖字體?
- 25. 如何在Android上的OpenGL-es中繪製圓柱體?
- 26. 在左/右方向傾斜的平截頭體的Android opengl問題
- 27. 不能在立方體內繪製 - OpenGL
- 28. OpenGL:在.obj頂點繪製球體
- 29. 如何將線段裁剪爲平截頭體?
- 30. 在OpenGL中繪製線條
在什麼空間你想繪製你的視錐?這是用於某種概述/提示嗎? – derhass
@derhass世界空間。 – debonair