[英]Why is this object drawn different if I use glFrustum?
我正在為我的計算機圖形類做這個 OpenGL 項目,在那里我顯示一個對象並旋轉它等等,問題是在項目開始時我們使用了glOrtho()
,它看起來非常棒。
但是現在老師說透視必須用glFrustum()
,如果我用那個函數,對象是這樣畫的,我真的不知道為什么會這樣:
這是我的init()
函數中的代碼,其中一切都發生了變化:
void init (void)
{
/* select clearing (background) color */
glClearColor (0.0, 0.0, 0.0, 0.0);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-100.0, 100.0, -60.0, 160.0, -100.0, 100.0);
//glFrustum(-100, 100 ,-100 ,100 ,1 , 40);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(90,0,1,0);
}
我很感激你的幫助。
編輯:如果我使用 glFrustum(-100, 100, -100, 100, 20, 200) 它看起來像這樣,就像我越來越接近但是左邊,右邊,頂部和底部參數呢? 他們對這個價值觀沒意見嗎?
沒有更多信息就很難確定。 也許該模型可以提供一些見解。 但我懷疑它可能與你的裁剪平面(做nearVal
和farVal
描述這里)傳遞給參數glFrustum
( 1, 40
)。 也許嘗試將它們設置為更廣泛的范圍,例如您的glOrtho
調用: 1, 150
(注意:傳遞給glFrustum
時, nearVal
或farVal
都不能為負)。
這一切都取決於模型的比例以及它相對於相機的定位方式。 如果模型的一部分落在剪裁平面之外,那么它將被剪裁。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.