Поддержка OpenGL блоки glbegin последний объект наследует атрибуты от предыдущего объекта.
Я пытаюсь создать несколько отдельных объектов с помощью openGL и freeGLUT.
У меня есть 3d-куб, представляющий моего игрока, который я могу перемещать с помощью пользовательских входов.
И у меня есть очень большой квадроцикл 100х100 (квадроциклов), представляющий землю.
У меня также есть свет, и я отслеживаю положение камеры с помощью третьего, неподвижного Куба.
Итак, вот в чем проблема:
Квадроцикл, очевидно, намного больше крошечного Куба в масштабе 1f, поэтому я масштабирую этот огромный квадроцикл до 0,03 f с помощью функции glScalef ().
Когда я рисую свой куб игрока, я рисую его после того, как нарисовал землю, и мой куб игрока наследует масштаб (становится крошечным и появляется в начале квадрата земли, а не в реальном начале.
Как я могу это исправить? так что мой игрок появляется в правильном начале, а не в начале земли, и что он не наследует масштаб земли?
void Scene::DrawCameraCube(float x, float y, float z) { glTranslatef(x, y, z); glScalef(1, 1, 1); glRotatef(0, 1, 0, 0); glBegin(GL_QUADS); > <snip> drawing cube glEnd(); }
void Scene::DrawGround() { glTranslatef(-3, -3, 0); glScalef(0.03, 0.03, 0.03); glBegin(GL_QUADS); > <snip> drawing quad ground. glEnd(); }
Что я уже пробовал:
куча всякой всячины, меняющейся вокруг значений переменных, переключающей порядки преобразований и вращений.
Понятия не имею, что еще делать.