я в настоящее время обучения 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