|
Модераторы: Rickert, Alexeis, BorisVorontsov |
|
gordmiand |
|
|||
Опытный Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Хочу сделать простейшую анимацию – перемещение крестика по OpenGL-сцене...
Делаю так:
Вопрос – почему у меня почти каждый новый крестик отличается от предыдущего? то есть одна палка крестика рисуется смещенной относительно другой, а то и визуально короче, хотя они должны рисоваться относительно точки (X,Y,) и одинаковой длины (см. код выше)...Если рисовать крестик побольше (задать коэф. rr = 5), то вроде все нормально перерисовывается, но мне надо рисовать маленький крестик (примерно как при rr = 1) . Подскажите пож-та в чем тут дело и как решить практически такую проблему? в прилагаемом архиве - данная программка... Это сообщение отредактировал(а) gordmiand - 12.8.2010, 20:00 Присоединённый файл ( Кол-во скачиваний: 6 ) gl_primer.rar 4,26 Kb |
|||
|
||||
gordmiand |
|
|||
Опытный Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
нет ну правда - что за глюк такой? может я хочу нарисовать слишком мелкий рисунок или надо задавать размеры в "целых" opengl-пикселах? почему-то же ведь этот же рисунок, но в увеличенном виде перерисовывается без искажений, а при рисовании крестика меленьким - иногда (в некоторых перерисовках) возникают "глюки" в виде смещения палочек креста относительно друг друга...
подскажите пож-та в чем тут дело и как сие исправить? |
|||
|
||||
gordmiand |
|
|||
Опытный Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
:люди, подскажите пож-та хотя бы теоретически - ну почему у меня при перерисовке обыкновенного крестика или квадрата данная(ые) фигура(ы) геометрически искажается - вроде все переменные типа float, размеры примитивов тоже вещественные числа...а если рисуешь например тот же квадрат, но побольше - тогда он нормально перерисовывается, но мне-то его надо маленьким нарисовать (примерно 0.7*0.7 gl-пикселей при размере gl-сцены 100*100) - пробовал и масштабирование использовать, и целочисленный размер квадрата (1*1), но с увеличением размеров сцены (200*200) для сохранения нужной мне пропорции, вместо float использовал GLfloat - эффектов ноль (то получается, что крестик несимметричный относ-но его центра, то вместо квадрата - явный прямоугольник)...
Это сообщение отредактировал(а) gordmiand - 12.8.2010, 19:58 |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Лучше было тему создать в разделе C/C++: Мультимедия, OpenGL/DirectX .
По умолчанию опенгл считает область рисования квадратной, вне зависимости от соотношения сторон. Исправляется это так.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
gordmiand |
|
|||
Опытный Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Alexeis: первые 2 строки из првиеденного Вами вышее ответа у меня и так уже есть - в функции resizeGL (см. выше в моем примере)...
а вот куда именно вставить и зачем уменьшать изображение в 100 раз???
если эту строку поставить в resizeGL или paintGL(), то естес-но ничего не увидишь - настолько фигура мелкая и куда-то она смещается из-за масш-ия...ответьте пож-та поподробнее что куда.... Это сообщение отредактировал(а) gordmiand - 12.8.2010, 20:41 |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Ну я сделал экран таким, чтобы пикселы экрана соответствовали пикселам OpenGL (по умолчанию ведь область рисования -1..1) В принципе, никто ведь не мешает сделать что-то типа
Как известно домножение на константу не искажает пропорции. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
gordmiand |
|
|||
Опытный Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Alexeis: поставил Ваш glScale сразу перед отрисовкой крестика:
это масштабирование ничего не дает - как крестик криво перерисовывался ранее, так он и сейчас так же перерисовывается....или этот cr'qk не сюда надо ставить и что он вообще дает? и вообще - хотелось бы понять в теории почему происходят такие метаморфозы с "пропорциями" (смещение палок крестика друг относительно друга) фигуры при ее перерисовке? |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Конечно ничего не дает если пропорции оставить 1:1 с чего бы что-то поменялось? Неужели окно квадрат, а не прямоугольник? -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
gordmiand |
|
|||
Опытный Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
вообще мне не принципиальны размеры gl-сцены - я взял например как 100*100, так как при прямоугольных размерах сцены соот-но и картинка будет сплющена по Y или растянута по Х...но почему нельзя оставить квадратные размеры сцены и что тогда будет с остальными моими примитивами на экране? просьба пояснить вообще почему такое у меня происходит при перерисовке примитива(ов)? подскажите пож-та предметно на моем примере (см.выше) что и как мне надо сделать, а то я уже замучился перебирать различные варианты...
|
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Т.е. искажения наблюдаются даже в случае если окно квадратное? -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
gordmiand |
|
|||
Опытный Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Alexeis: в то-то и дело, что именно при размерах сцены 100*100 (оно у меня изначально было, другое мне в принципе и не надо) и получаются какие-то искажения фигуры при ее перерисовке - см. приложенный архив программы в начале данной темы...и я не могу понять почему такое в приципе происходит...но если выводить эту фигуру (крестик), но покрупнее (допустим размером 5*5), то все нормально перерисовывается (а может это просто менее заметно, хотя даже в этом увеличенном варианте гориз-ая палка выглядит-рисуется длиннее вертикальной при их одинаковых размерах и размерах сцены 100*100)...может размеры пикселей надо задавать или что-то еще в этом духе? или в моем коде что-то не так....не понимаю я в чем тут может быть дело в принципе...может как по-другому анимацию легче сделать (в смысле двигать крестик не относительно его центра, а отн-но начала координат и т.п.)?
|
|||
|
||||
gordmiand |
|
|||
Опытный Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
: блин, ну что за мистика такая с перерисовкой мелкого примитива? неужели никто не сталкивался? тогда подскажите свой способ нарисовать (а главное анимировать) мелкий примитив аля крестик или квадрат...мой способ (см. в начале темы) не хочет корректно перерисовывать примтив (он искажается)...
|
|||
|
||||
gordmiand |
|
|||
Опытный Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
допустим квадрат (это один из примтивов, который мне надо анимировать) я могу нарисовать как точку большого размера - такой квадрат нормально перерисовывается, так как он является "единым-неделимым" примитивом, а другие нужные мне (крестик, снежинка, ромб и др..) граф. объекты можно получить только из примитивов - прямых,ломаных,многоугольников и т.п. - вот тут-то и начинаются непонятки... по-мо-ги-те....
|
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
gordmiand, покажите скрин. Кроме того выложите экзешник. Попробуем на других компах, сравним у кого что получиться.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
gordmiand |
|
||||
Опытный Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Alexeis: выкладываю экзешник (непонятно зачем скрин тогда нужен) - смотрите внимательно, а то скажите, что все окей...
в экзешнике фигуры выводятся след. образом: в таймере:
Присоединённый файл ( Кол-во скачиваний: 6 ) Dimka.rar 208,97 Kb |
||||
|
|||||
Вы можете найти полезным что... | |
|
|
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |