簡體   English   中英

如果我使用 glFrustum,為什么繪制的這個對象會有所不同?

[英]Why is this object drawn different if I use glFrustum?

我正在為我的計算機圖形類做這個 OpenGL 項目,在那里我顯示一個對象並旋轉它等等,問題是在項目開始時我們使用了glOrtho() ,它看起來非常棒。

glOrthoOBJ

但是現在老師說透視必須用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) 它看起來像這樣,就像我越來越接近但是左邊,右邊,頂部和底部參數呢? 他們對這個價值觀沒意見嗎?

在此處輸入圖片說明

沒有更多信息就很難確定。 也許該模型可以提供一些見解。 但我懷疑它可能與你的裁剪平面(做nearValfarVal描述這里)傳遞給參數glFrustum1, 40 )。 也許嘗試將它們設置為更廣泛的范圍,例如您的glOrtho調用: 1, 150 (注意:傳遞給glFrustum時, nearValfarVal都不能為負)。

這一切都取決於模型的比例以及它相對於相機的定位方式。 如果模型的一部分落在剪裁平面之外,那么它將被剪裁。

暫無
暫無

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

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