最近和juanL兩個人調openGL,現在才把一些東西搞清楚
project matrix 相當於是內參,自己設置的一些東西,可以通過gluperspective之類的函數設置
model matrix 相當於外參, 就是R和T。
一般情況下,程序都至少會調用設置project matrix一次,如我們通常在reshape回調函數裡設置gluperspective函數(因為不管怎麼樣所有的回調函數都得至少跑一次,如下面的resizeGL函數,就是通過調用這個函數讓我們設置內參數。)
就是因為如果窗口發生變化的話,我們的project matrix得重新設置,一般都是
void GLWidget::resizeGL(int width, int height)
{
if ( height == 0 )
{
height = 1;
}
glViewport( 0, 0, (GLint)width, (GLint)height );
glMatrixMode( GL_PROJECTION ); // 開始設置project matrix
glLoadIdentity(); // 清楚影響
gluPerspective( 45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0 ); // 設置project matrix
glMatrixMode( GL_MODELVIEW ); // 開始設置model matrix
glLoadIdentity();
}
可以多看看紅寶書。
整個openGL就是一個起到一個攝像機的作用。