1
我已閱讀紅皮書中有關繪製球體的代碼,但它是半徑= 1的單位球體。它從二十面體開始,x和z被定義爲使所有12個頂點和中心之間的距離等於1.那麼如果我需要更大或更小的球體呢?我按比例改變了x和z,但它不起作用。我應該如何設置x和z的值來獲得更小的球體?使用opengl繪製一個球體,使用紅皮書中的代碼,但是具有不同的半徑
我已閱讀紅皮書中有關繪製球體的代碼,但它是半徑= 1的單位球體。它從二十面體開始,x和z被定義爲使所有12個頂點和中心之間的距離等於1.那麼如果我需要更大或更小的球體呢?我按比例改變了x和z,但它不起作用。我應該如何設置x和z的值來獲得更小的球體?使用opengl繪製一個球體,使用紅皮書中的代碼,但是具有不同的半徑
在繪製球體之前應用縮放變換。如果您正在使用固定功能管道,則可以使用glScalef(...)
來完成。否則,你將不得不自己構建scaling matrix。
glScalef工作!謝謝!我無法想象我沒有嘗試過。然而,照明似乎有點奇怪。那麼它對照明有什麼影響?繪製球體時,我爲所有頂點定義法向量,所以如果我使用glScalef,我不應該重新定義所有的法向量嗎? – phil
好吧,我只是發現我可以使用GL_NORMALIZE自動修改法向量。謝謝。 – phil
縮放也會影響法線,所以您應該在縮放後再對其進行歸一化。但是,如果您在繪製之前調用'glEnable(GL_NORMALIZE)',OpenGL將爲您執行此操作。 – mazayus