Мне нужно создать 3D-куб, и пока я создал все вершины, но когда я запускаю программу, я вижу куб (или то, что я надеюсь, куб, я не могу сказать) только с одной стороны, поэтому похоже на квадрат. Я хочу знать, как посмотреть на свой куб сверху, чтобы проверить, действительно ли он выглядит так, как я хочу.
Я создал 24 вершины с помощью glVertex3f, но, как я уже сказал, я не могу сказать, куб это или нет, потому что я не могу смотреть на него под углом, отличным от угла по умолчанию.
Я попытался загрузить GLM, но я очень запутался в том, как, если вообще, использовать это, чтобы изменить перспективу просмотра.
glEnable(GL_DEPTH_TEST);
// Loop until the user closes the window
while (!glfwWindowShouldClose(window))
{
// Render here
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_QUADS);
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, -0.5f, 0.5f);
glVertex3f(0.5f, -0.5f, 0.5f);
... // Repeating drawing the vertices for each vertex of the cube
glEnd();
// Swap front and back buffers
glfwSwapBuffers(window);
// Poll for and process events
glfwPollEvents();
}
Никаких сообщений об ошибках, но я не могу сказать, куб это или нет.





// Render here
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// need the window width & height to compute aspect ratio
int width, height;
glfwGetWindowSize(window, &width, &height);
// set up the camera projection (if you haven't done this in init)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, float(width) / height, 0.1f, 100.0f);
// set camera position & orientation
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(1, 1, -3, //< eye position
0, 0, 0, //< aim position
0, 1, 0); //< up direction
// now draw stuff
glBegin(GL_QUADS);
glEnd();
Идеально! Похоже, я сделал куб правильно, я просто не мог его увидеть, потому что смотрел на него с оси z, которая показывала мне только одну грань. Большое спасибо!
Я рекомендую вам прочитать о проекционных матрицах. В каждом базовом руководстве по OpenGL есть пример рендеринга куба.