Я новичок в OpenGL.Я использую JOGL.
У меня есть класс WorldEntity
, который представляет вещь, которую можно визуализировать.Он имеет такие атрибуты, как position
и size
.Для рендеринга я использовал этот метод:
/**
* Renders the object in the world.
*/
public void render() {
gl.glTranslatef(getPosition().x, getPosition().y, getPosition().z);
gl.glRotatef(getRotationAngle(), getRotation().x, getRotation().y, getRotation().z);
// gl.glScalef(size, size, size);
gl.glCallList(drawID);
// gl.glScalef(1/size, 1/size, 1/size);
gl.glRotatef(-getRotationAngle(), getRotation().x, getRotation().y, getRotation().z);
gl.glTranslatef(-getPosition().x, -getPosition().y, -getPosition().z);
}
Шаблон, который я использовал, применяет каждый атрибут сущности (например, положение или вращение), а затем отменяет его, чтобы не повредить состояние дляследующий объект, который будет визуализирован.
Раскомментирование масштабирующих линий приводит к тому, что приложение становится намного более медленным, поскольку оно отображает скромную сцену на моем скромном компьютере.Я предполагаю, что деление с плавающей запятой слишком велико, чтобы обрабатывать тысячи операций в секунду.(?)
Как правильно поступить?Могу ли я найти менее сложный способ отменить преобразование масштабирования?Нужно ли сортировать объекты по масштабу и рисовать их, чтобы уменьшить требуемые преобразования масштабирования?
Спасибо.