0
這可能看起來像一個基本問題,但是如何處理/操作在OpenGL中通過着色器創建的對象?從着色器操縱OpenGL對象
我總是需要不同的對象的座標,以便在我的宿主程序中使用,根據這些座標創建/操作不同的對象,然後將它們發送回頂點/片段/幾何着色器。
我有我最初的頂點座標,我在我的主要程序定義,但一旦他們達到了幾何着色器,該位置是通過計算:
gl_Position = projection_matrix * view_matrix * vec4(square_point,1);
EmitVertex();
而現在,例如,我需要在屏幕上選擇並用鼠標移動它們。但是我不能想象得到確切座標的簡單方法。 我試圖在我的主程序中進行位置數學運算,但我似乎沒有得到與幾何着色器計算出的座標相同的座標。並且計算CPU上的所有數據對於我擁有的對象數量來說並不是最佳的。
我曾經想過通過緩衝區來做一些GPU-> CPU數據檢索,但是有太多的對象和很多座標,以至於它是無情的。
我想有另一種方法來解決這個問題,只是我可能沒有OpenGL的工作原理。
你是否正確地處理轉換後的'w'座標?這是在Geometry Shader運行之後發生的一個步驟(將所有4個向量組件分開)。如果您捕獲發射的頂點並比較這些頂點,它們將不會執行此步驟。 –
@ AndonM.Coleman - 我不這麼認爲。我正在應用我提出的確切公式。 –