Я действительно новичок в opengl, и сейчас я изучаю основы. У меня вопрос высокого уровня.
Если я хочу создать объект, скажем, столбец, в котором есть все варианты?
- Импорт 3D-сетки из любой внешней программы (например, 3DStudio) и загрузка ее в opengl
- Создание 6 полигонов с использованием glVertex3f
- переизбыток? (Я видел glutSolidCube, но ничего похожего на glutSolidColumn)
Мои вопросы:
А) Есть ли другой способ сделать это?
B) Как правильно создавать обычные объекты / анимированные объекты в opengl, если вы НЕ используете сетку 3DStudio?
C) Правильно ли этот код для создания столбца в 2)? (В таком случае я постараюсь параметризовать его, используя переменные x, y, z, чтобы иметь столбец для заданного этажа плитка с заданной высотой)
//Column
//Wall
glBegin(GL_POLYGON);
glVertex3f(150.0f, 250.0f,50); // x1, y1 - top-left corner
glVertex3f(50.0f, 250.0f,50); // x2, y1 - top-right corner
glVertex3f(50.0f, 50.0f,50); // x2, y2 - bottom-right corner
glVertex3f(150.0f, 50.0f,50); // x1, y2 - bottom-left corner
glEnd( );
//Wall
glBegin(GL_POLYGON);
glVertex3f(50.0f, 250.0f,0); // x1, y1 - top-left corner
glVertex3f(150.0f, 250.0f,0); // x2, y1 - top-right corner
glVertex3f(150.0f, 50.0f,0); // x2, y2 - bottom-right corner
glVertex3f(50.0f, 50.0f,0); // x1, y2 - bottom-left corner
glEnd( );
//Wall
glBegin(GL_POLYGON);
glVertex3f(150.0f, 250.0f,0); // x1, y1 - top-left corner
glVertex3f(150.0f, 250.0f,50.0f); // x2, y1 - top-right corner
glVertex3f(150.0f, 50.0f,50.0f); // x2, y2 - bottom-right corner
glVertex3f(150.0f, 50.0f,0); // x1, y2 - bottom-left corner
glEnd( );
//Wall
glBegin(GL_POLYGON);
glVertex3f(50.0f, 250.0f,50); // x1, y1 - top-left corner
glVertex3f(50.0f, 250.0f,0); // x2, y1 - top-right corner
glVertex3f(50.0f, 50.0f,0); // x2, y2 - bottom-right corner
glVertex3f(50.0f, 50.0f,50); // x1, y2 - bottom-left corner
glEnd( );
//Floor
glBegin(GL_POLYGON);
glVertex3f(50.0f, 50.0f, 0); // x1, y1 - top-left corner
glVertex3f(50.0f, 50.0f, 50); // x2, y1 - top-right corner
glVertex3f(0, 50.0f, 50); // x2, y2 - bottom-right corner
glVertex3f(0, 50.0f, 0); // x1, y2 - bottom-left corner
glEnd( );
//Ceiling
glBegin(GL_POLYGON);
glVertex3f(50.0f, 250.0f, 0); // x1, y1 - top-left corner
glVertex3f(50.0f, 250.0f, 50); // x2, y1 - top-right corner
glVertex3f(0, 250.0f, 50); // x2, y2 - bottom-right corner
glVertex3f(0, 250.0f, 0); // x1, y2 - bottom-left corner
glEnd( );