我目前正在學習OpenGL和從我的理解,我有畫線之前調用(OpenGL的)繪製直線,但形狀不
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
。然後,要繪製形狀,我需要調用
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
繪製形狀,如GL_TRIANGLES和GL_QUADS。 我寫了這段代碼,其目的是在頂部繪製一條線和3個形狀,但只繪製了一條線。 這是我的代碼。
void drawScene() {
//Clear information from last draw
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION); //Switch to the drawing perspective
glLoadIdentity(); //Reset the drawing perspective
glBegin(GL_LINES);
glColor3f(100,200,100);
glLineWidth(10.0f);
glVertex2f(-1.0f,0.8f);
glVertex2f(1.0f,0.8f);
glEnd();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glBegin(GL_QUADS); //Begin quadrilateral coordinates
//Trapezoid
glVertex3f(-0.7f, -1.5f, -5.0f);
glVertex3f(0.7f, -1.5f, -5.0f);
glVertex3f(0.4f, -0.5f, -5.0f);
glVertex3f(-0.4f, -0.5f, -5.0f);
glEnd(); //End quadrilateral coordinates
glBegin(GL_TRIANGLES); //Begin triangle coordinates
//Pentagon
glVertex3f(0.5f, 0.5f, -5.0f);
glVertex3f(1.5f, 0.5f, -5.0f);
glVertex3f(0.5f, 1.0f, -5.0f);
glVertex3f(0.5f, 1.0f, -5.0f);
glVertex3f(1.5f, 0.5f, -5.0f);
glVertex3f(1.5f, 1.0f, -5.0f);
glVertex3f(0.5f, 1.0f, -5.0f);
glVertex3f(1.5f, 1.0f, -5.0f);
glVertex3f(1.0f, 1.5f, -5.0f);
//Triangle
glVertex3f(-0.5f, 0.5f, -5.0f);
glVertex3f(-1.0f, 1.5f, -5.0f);
glVertex3f(-1.5f, 0.5f, -5.0f);
glEnd(); //End triangle coordinates
glutSwapBuffers(); //Send the 3D scene to the screen
}
可能有人請向我解釋如何GL_PROJECTION和GL_MODELVIEW以及它們如何工作之間切換?
您使用了棄用的固定功能API。我強烈建議你轉向OpenGL 4.5,這將解決問題。 – ybungalobill
爲了加速學習,您應該瞭解有關窗口及其座標,OpenGL視口,NDC和剪輯空間的更多信息。你不會通過編碼正確學習OpenGL,並看看會發生什麼。祝你好運。 – Andreas