簡體   English   中英

如何在OpenGL中完全像glRotatef()那樣旋轉頂點?

[英]How to rotate vertices exactly like with glRotatef() in OpenGL?

我需要優化渲染代碼,目前我正在使用glPushMatrix()和glTranslatef()和glRotatef()。 但是,這比在單個頂點數組調用中呈現所有對象的成本更高。

OpenGL中是否有一些快速內置函數來像glRotatef()那樣旋轉我的頂點數據? 如果沒有,您建議使用哪種庫或方法? 我知道的唯一方法是使用sin / cos函數旋轉頂點,但是我不確定這是最快的方法,還是會導致相同的結果。

我只需要每個對象沿一個軸旋轉一次(2D渲染),因此它不需要太復雜,也不需要完全支持glPushMatrix()系統。

編輯:我不想為此使用着色器。

Edit2:我僅渲染沿零點旋轉的單個四邊形(在2D模式下),因此每個頂點的值從-10到10。 我當前的代碼: (quad.vert[i].x*cosval)-(quad.vert[i].y*sinval) (也是y的兩倍)。

我假設您使用的是OpenGL的舊版本,因為您使用的是glRotate ,並且由於您不想使用着色器而確實是古老的/奇怪的硬件。

您可以將glRotate*()調用放在顯示列表中,或者自己計算旋轉矩陣。 OpenGL紅皮書的第3章以及附錄F提供了您自己構建矩陣所需的信息。 有關顯示列表的更多信息,請參見第7章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM