2012-07-30 61 views
0

我目前使用glutsolidsphere()渲染球體。當然,縮放之後,球體看起來像是橢球體。 那麼有什麼辦法來渲染一個固定像素半徑的球體?我只想在某個特定半徑(像素)(r = 10像素)的特定位置(x,y,z)繪製一個球體,並確保其形狀不會受到建模轉換的影響。OpenGL - 渲染具有固定像素半徑的球體

+1

歡迎來到Stack Overflow!您的代碼是正確回答問題所必需的。現在,我們只能猜測正確答案可能是什麼。 – 2012-07-30 14:27:20

回答

0

當您縮放時,可以在x,y和z中縮放。如果您在每個維度中使用相同的值進行縮放,則它將保持一個球體。

如果您想要應用總是給出相同大小的球體的縮放比例(以像素爲單位),則必須根據視口大小定義進行縮放。這些是你給glViewport()的參數。例如,縮放'x'時,使用因子k /寬度(其中寬度取自glViewport)。根據球體的大小,根據需要選擇常量'k'。

可以使用glGet()來請求使用glViewport()發送的數據,但應該避免從OpenGL讀取數據。在最壞的情況下,它將等待管道沖洗。更好的想法是記住glViewport()的用途。

你確實意識到過剩並不再推薦?而且這個glutsolidsphere基於不推薦的固定功能管道OpenGL?

1

諸如旋轉,平移和縮放的轉換不應該影響球體的外觀。請記得在所有3軸上以相同的值正確縮放。或者你可以用一個常量標量乘以頂點,並且應該縮放球體而不會扭曲它。如果您仍然看到失真,可能是因爲您的相機(高FOV傾向於在邊緣附近變形)或錯誤的縱橫比(重新調整OpenGL窗口大小不會保留縱橫比)。