2016-06-10 26 views
0

我想繪製一個圖像背景的動畫模型。 要正確繪製我的模型,我需要使用glMatrixMode,glLoadIdentity,gluPerspective等。但是,要在背景上繪製矩形,我需要更改所設置的所有模式和矩陣以正確地查看我的模型。繪製動畫模型與背景 - 設置opengl矩陣模式和透視

我在下面發佈我的代碼。任何人都可以告訴我該怎麼做才能同時正確地看到我的模型和背景?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer 
glLoadIdentity();    // Reset MV Matrix 

glBindTexture(GL_TEXTURE_2D, m_texture1); 
glBegin(GL_QUADS); 
glColor4f(1.0f, 1.0f, 1.0f, 1); 
glTexCoord2f(0, 1); 
glVertex3f(-1.0, -1.0, 0); 
glTexCoord2f(0, 0); 
glVertex3f(-1.0, 1.0, 0); 
glTexCoord2f(1, 0); 
glVertex3f(1.0, 1.0, 0); 
glTexCoord2f(1, 1); 
glVertex3f(1.0, -1.0, 0); 
glEnd(); 

const double aspectRatio = (float) getOpenGLViewWidth() 
     /getOpenGLViewHeight(), fieldOfView = 45.0; 

glMatrixMode (GL_PROJECTION); 
glLoadIdentity(); 
gluPerspective(fieldOfView, 
     aspectRatio, 
     1.0, 
     1000.0); 
glMatrixMode (GL_MODELVIEW);     // Select The Modelview Matrix 
glLoadIdentity(); 
glTranslatef(0.0f, -25.0f, -70.0f); // Move 40 Units And Into The Screen 

glViewport(0, 0, getOpenGLViewWidth(), getOpenGLViewHeight()); 

// glRotatef(90.0f, 1.0f, 0.0f, 0.0f); 
recursive_render(_scenes[0], _scenes[0]->mRootNode, 25); 

回答

0

如果圖像的背景是一個靜態的背景下,應填寫整個視口,而不是與您的場景旋轉,你應該使其分開使用正交矩陣。

我的遺產GL是有點生疏,但它應該是這樣的:

  1. 設置正交投影矩陣(例如用glOrtho)
  2. 設置模型視圖矩陣身份
  3. 渲染你的填充整個視口的靜態背景
  4. 設置透視投影矩陣
  5. 爲您的動畫模型翻譯並旋轉您的模型(視圖)矩陣
  6. 渲染你的模型

請注意,如果你想保存一些填充率,你可能想要翻轉順序並渲染背景。