Пишу прогу на OpenGL в MSVC++6.0, но она работает крайне медлено (прорисовка).
Прога простая: берется объект из *.3ds, накладывается на него текстура, вращается при помощи мыши.
Количество граней в объекте около 150.
У меня стоит Win2k SP4, GF MX400 128 bit, Detonator 66.81.
Пробывал ставить более ранние версии драйверов — результат тот же.
Пробывал компилировать уже готовые (сторонние) OpenGL-сцены — то же самое.
Подскажите в чем может быть причина, если можете.
PS. Писал на Direct3D — все в порядке. Про debug и Release знаю.
Здравствуйте, dima bdc, Вы писали:
DB>Пишу прогу на OpenGL в MSVC++6.0, но она работает крайне медлено (прорисовка). DB>Прога простая: берется объект из *.3ds, накладывается на него текстура, вращается при помощи мыши. DB>Количество граней в объекте около 150.
DB>У меня стоит Win2k SP4, GF MX400 128 bit, Detonator 66.81.
DB>Пробывал ставить более ранние версии драйверов — результат тот же. DB>Пробывал компилировать уже готовые (сторонние) OpenGL-сцены — то же самое.
DB>Подскажите в чем может быть причина, если можете.
DB>PS. Писал на Direct3D — все в порядке. Про debug и Release знаю.
Я Воопщета опенгл не люблю .... (d3d rulezz)
Но есть мнение ( и не только у меня) что нужно нам всем показать как ты формат пикселя выбираешь !
если вдруг окажется что ты просто обнуляешь PixelFormatDescriptor (что то в этом духе)
то driver opengl сам выбирает моду для просчёта отрисовки и так далее (кстати сказать не самую лучшую ! )!
Ещё 1 момент ! где собственно фставлен вызофф функции атрисоффки !
если на стандартном таймере ! то медленно будет даже на машине 2010 года ! вот ...
Так чтаааа пакажи нам код а мы скажем где у тебя BUG ! и он несомненно станет фичей !
P.S.
Ногу сверло ...
Re[2]: Проблемы со скоростью в OpenGL
От:
Аноним
Дата:
06.12.04 13:58
Оценка:
Здравствуйте, MOZG, Вы писали:
MOZ> Ещё 1 момент ! где собственно фставлен вызофф функции атрисоффки !
MOZ> если на стандартном таймере ! то медленно будет даже на машине 2010 года ! вот ...
Здравствуйте, dima bdc, Вы писали:
DB>Пишу прогу на OpenGL в MSVC++6.0, но она работает крайне медлено (прорисовка).
Попробуй использовать дисплейные списки.
P.S. У меня была подобная проблема: объект вращался мышью очень медленно и рывками (чем дальше отодвигался, тем медленнее).
Заметил, что это в основном происходит, если открывать файл в окошке двойным щелчком мыши. Если по кнопке "открыть" (т.е. сначала выбрать файл в диалоге открытия, и после того, как его имя появится в строке, нажать "открыть" на диалоге) то все врашается нормально. Взаимосвязь так и не установил .
Код здесь http://rsdn.ru/Forum/Message.aspx?mid=928938&only=1
Впрочем, не хочу вас слишком обнадеживать: я вовсе не уверен, что все понял правильно. Два смысловых слоя я уловил, но, по-моему, там был еще и третий... (А&Б Стругацкие, "Жук в муравейнике").
Здравствуйте, Ulys, Вы писали:
U>Здравствуйте, dima bdc, Вы писали:
DB>>Пишу прогу на OpenGL в MSVC++6.0, но она работает крайне медлено (прорисовка).
U>Попробуй использовать дисплейные списки.
U>P.S. У меня была подобная проблема: объект вращался мышью очень медленно и рывками (чем дальше отодвигался, тем медленнее). U>Заметил, что это в основном происходит, если открывать файл в окошке двойным щелчком мыши. Если по кнопке "открыть" (т.е. сначала выбрать файл в диалоге открытия, и после того, как его имя появится в строке, нажать "открыть" на диалоге) то все врашается нормально. Взаимосвязь так и не установил . U>Код здесь http://rsdn.ru/Forum/Message.aspx?mid=928938&only=1
Фишка тут в следующем: на "линолиуме" все рабтает без тормозов, а в W2K прорисовывается еле-еле (пару кадров в сек.). Может нужен какой-нибудь пораметр при компиляции?
PS Драва на обоих операционках стоят одинаковые (на сколько это возможно...)
Re[3]: Проблемы со скоростью в OpenGL
От:
Аноним
Дата:
08.12.04 10:14
Оценка:
Юзай Multimedia timer
или вставляй на onIdle
А лучше всего заведи отдельный thread который будет рисовать сцену ...
т е в основной проге идут расчёты а thread уже рисует сцену
(расчитанную в некоторый момент времени , она для него как бы статическая , прога же продолжает считать дальше и может
забигать на несколько кадров дальше или наоборот неуспевать это неважно )
у thread можешь поставить ещё и приоритет побольше !
Здравствуйте, Аноним, Вы писали:
А>Юзай Multimedia timer А> или вставляй на onIdle
А>А лучше всего заведи отдельный thread который будет рисовать сцену ...
А>т е в основной проге идут расчёты а thread уже рисует сцену А> (расчитанную в некоторый момент времени , она для него как бы статическая , прога же продолжает считать дальше и может А> забигать на несколько кадров дальше или наоборот неуспевать это неважно )
А> у thread можешь поставить ещё и приоритет побольше !
А>P.S.
А> не забудь про синхронизацию
У парня в объекте всего 150(!) граней.
Дело тут скорее всего в реализации перерисовки (например, объект считывается из файла заново каждый раз, когда его нужно перерисовать или т.п.).
Впрочем, не хочу вас слишком обнадеживать: я вовсе не уверен, что все понял правильно. Два смысловых слоя я уловил, но, по-моему, там был еще и третий... (А&Б Стругацкие, "Жук в муравейнике").
DB>Фишка тут в следующем: на "линолиуме" все рабтает без тормозов, а в W2K прорисовывается еле-еле (пару кадров в сек.). Может нужен какой-нибудь пораметр при компиляции?
DB>PS Драва на обоих операционках стоят одинаковые (на сколько это возможно...)
Здравствуйте, dima bdc, Вы писали:
DB>Пишу прогу на OpenGL в MSVC++6.0, но она работает крайне медлено (прорисовка). DB>Прога простая: берется объект из *.3ds, накладывается на него текстура, вращается при помощи мыши. DB>Количество граней в объекте около 150.
DB>У меня стоит Win2k SP4, GF MX400 128 bit, Detonator 66.81.
DB>Пробывал ставить более ранние версии драйверов — результат тот же. DB>Пробывал компилировать уже готовые (сторонние) OpenGL-сцены — то же самое.
DB>Подскажите в чем может быть причина, если можете.
DB>PS. Писал на Direct3D — все в порядке. Про debug и Release знаю.
У меня была недавно такая проблема. Вращающийся кубик тормозил на ATI 9600.
Причем DX работал нормально. Все выяснилось просто:
оказалось, что мою DLL-ку (OPENGL.DLL) какая-то прога подменила на DLL-ку от бибилиотеки
Mesa. Я восстановил старую и все заработало.
Здравствуйте, <Аноним>, Вы писали:
А>А лучше всего заведи отдельный thread который будет рисовать сцену ...
А>т е в основной проге идут расчёты а thread уже рисует сцену А> (расчитанную в некоторый момент времени , она для него как бы статическая , прога же продолжает считать дальше и может А> забигать на несколько кадров дальше или наоборот неуспевать это неважно )
А> у thread можешь поставить ещё и приоритет побольше !
А>P.S.
А> не забудь про синхронизацию
да, рендеринг в отдельном потоке — наш выбор! *существенно* повышает производительность.