Масштабирование 3D (OpenGL)
Моя программа рисует некоторое количество линий. Потом они поворачиваются с помощью glRotate. Мне надо после этого смасштабировать изображение (без сохранения пропорций), чтобы эти линии заняли весь экран (проекция ортографическая). Если все повороты рассчитывать самому, тогда смысла от 3D никакого. Наверное, можно как-то по-другому узнать координаты после поворота. Но я нигде не нашёл, как это сделать. Может, кто-нибудь знает?
glScale - не катит?
Цитата:
glScale - не катит?
С какими параметрами его надо вызывать? Я не знаю, какие минимальные и максимальные координаты стали после поворота, а мне нужно, чтобы всё это растянулось до размеров экрана. Нужно или узнать координаты после поворота, или любым другим способом растянуть это до размеров экрана.
Получи через getMatrix матрицы MODELVIEW и PROJECTION. Путем нехитрых математических манипуляций с ними - получишь размер объекта.
Непосредственно из самих матриц я размер не получу. Если же умножать самому координаты всех точек на матрицы, то это и получится расчёт всех координат вручную. Это я могу сделать, но, как я уже говорил, смысла от 3D в таком случае никакого не будет. Меня интересует более оптимальный вариант (если он есть).
Цитата: Somebody
Или я, или не я, но кто-то из нас это всё не понял.
Непосредственно из самих матриц я размер не получу. Если же умножать самому координаты всех точек на матрицы, то это и получится расчёт всех координат вручную. Это я могу сделать, но, как я уже говорил, смысла от 3D в таком случае никакого не будет. Меня интересует более оптимальный вариант (если он есть).
Непосредственно из самих матриц я размер не получу. Если же умножать самому координаты всех точек на матрицы, то это и получится расчёт всех координат вручную. Это я могу сделать, но, как я уже говорил, смысла от 3D в таком случае никакого не будет. Меня интересует более оптимальный вариант (если он есть).
Ну, а какое отношение имеет 3D-библиотека к определению экранных размеров объекта? Функции получения и записи матриц, как раз для таких задач и предусмотрены. Это обще-распространенная практика. Да и оптимизировать это дело - весьма просто. Достаточно использовать XMM-расширения процессора, т.е. не очень большая ассемблерная вставка, или можно юзать intrinsics.
glRenderMode(GL_FEEDBACK) - это как раз то, что мне было нужно. Про оптимальность такого решения не знаю, но получить координаты после поворота получилось.