Я нарисовал сферу, используя GLUT в контексте GLFW.Код, который я использовал:
void drawSphere(std::vector<GLfloat> color, std::vector<GLdouble> position, float radius) {
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glColor3f(color[0], color[1], color[2]);
glPushMatrix();
glTranslated(position[0], position[1], position[2]);
glutSolidSphere(radius, 50, 50);
glPopMatrix();
}
, и я вызываю его в своем main()
функциональном цикле, который выглядит следующим образом:
while(!glfwWindowShouldClose(window)) {
// other stuff...
drawSphere({(GLfloat)1.0, (GLfloat)1.0, (GLfloat)1.0}, {(GLdouble)2.0, (GLdouble)2.0, (GLdouble)2.0}, 1.0);
// other stuff...
glfwSwapBuffers(window);
glfwPollEvents();
}
Но, независимо от того, какого цвета или какой позицииЯ уточняю, что я получу, это потрясающая красная сфера с центром в (0, 0, 0).Хотя, если я изменю радиус, сфера изменит свое измерение.
Я проверял код много раз и почти любой результат в Google о том, какнарисовать твердое тело с помощью GLUT, но не смог найти ответ на мою проблему.Кроме того, я попытался нарисовать две сферы, дважды вызвав функцию, предоставив две разные позиции и два разных цвета.Две сферы нарисованы, но они оба красного цвета и центрированы в (0, 0, 0), как вы можете видеть на этом скриншоте:
Поскольку я также рисую другие вещи, используя VAO, VBO и EBO с шейдером Vertex и Fragment, это может быть проблемой?Может ли быть проблема совместимости между GLUT и GLFW?Что я могу сделать, чтобы решить эту проблему?
РЕДАКТИРОВАТЬ: Благодаря @ Rabbid76 мне удалось решить проблему с позицией, используя glUseProgram(0)
, в то время как glBindVertexArray(0)
, похоже, не повлияло на поведение программы вообще,Тем не менее, теперь я сталкиваюсь с другой проблемой: поскольку я рисую все, используя шейдеры, у меня также есть матрица модели, матрица вида и матрица проекции для работы.Когда я рисую сферу с помощью конвейера gl, она отображается в углу изображения камеры:
и любое движение, которое я совершаю с камерой(используя мышь и клавиатуру), сфера останется в этом положении (в POV камеры).Я думаю, что это происходит из-за другого способа рисования объекта, но я не знаю, как установить сферу в правильное положение, используя команды gl pipe.Что я могу сделать?Есть ли какое-нибудь полезное руководство или учебное пособие, которым нужно следовать, чтобы заставить вещи работать?