Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Медлено рисует OpenGL


Автор: inkognitum 23.8.2008, 18:25
Добрый день.
Вот столкнулся с такой проблемой.
Рисую множество геометрических фигур с помощью OpenGL. Сама считалка геометрических фигур выполняется достаточно быстро. Раньше все рисовал с помощью GDI+, сейчас переписал все на OpenGL, результат понравился все рисуется быстро, но на некоторых тачках у которых встроеная видяха все рисуется медленней чем на GDI+, и опять же на некоторых тоже со встроенными видяхами все нормально..

в чем может быть проблема?! Все проверяемые компы были довольно современны скажем так офисного класса..
и опять же другие программы аналогичные и даже мощнее на тех же компах где моя программа тормозила летали без тормозов.


в чем может быть проблема? может существуют какие ускорители рисования?!

Заранее спасибо.

P.S. Пишу на C#, использую для работы OpenGL интегрированную с помощью вот этой статьи:
http://www.rsdn.ru/article/files/dotnet/openglbase.xml

Автор: Rickert 25.8.2008, 02:29
inkognitum
0) Когда вы работаете с C# на максимальную производительность и отдачу от железа можете забыть.
1) Есть тонны методов отбрасывать обработку тех фигру, которые не видны. bsp-tree, octree, порталы, frustum culling.
2) Всё зависит от того как вы рисуете объекты. Используете ли список, пользуетесь ли индексами.
3) Вы говорите о том, что сама считалка фигур работает быстро: во-первых всё в мире относительно и что значит ваше быстро? Во-вторых: а зачем при каждом отображении их просчитывать? Я так понял что вы их постоянно расчитываете, раз говорите о скорости их просчёта? Надо сначала просчитать, записать, и выводить потом уже. Если конечно не нужно постоянно менять параметры их геометрических просчётов.

Автор: Rpahut 25.8.2008, 10:08
Скорее всего где-то в коде ошибка. У мну такое было когда я неправильных размеров текстуру запихивал - не знаю как другие видеокарты, моя в таком случае рисует, но оч-чень медленно, вроде на программную эмуляцию слетает.

Автор: Rickert 26.8.2008, 03:31
Rpahut, текстура должна быть квадратной и размер кратен 2

Автор: Rpahut 27.8.2008, 16:56
Rickert smile  согласен
Но политика OGL - терпеть ошибки и по возможности продолжать работу. Хотя бы и с черепашьей скоростью.

Автор: Rickert 27.8.2008, 17:53
Rpahut, если ты будешь использовать mipmapping - то OpenGL сгенерирует текстуры всё равно квадратными, но естественно деформированными. Если не будет использован mimapping - то, насколько мне помнится, OGL просто не загрузит текстуру. Но это не точно, я не проверял.

Автор: $tatic 28.8.2008, 12:53
Насколько я понял из разговора с автором топика, то видеокарта Интел.

Автор: Rpahut 28.8.2008, 22:16
Кстате, inkognitum, есть новости?

Rickert, я вобще для примера про текстуры сказал, но [offtop]огл должен возвращать ошибку, если текстура неправильных размеров, все остальное зависит от реализации.[/offtop] Если ошибку проглядеть, она на разных машинах может по разному проявляться. И это касается уже не только текстур.

Автор: inkognitum 11.9.2008, 12:53
Извиняюсь за простой.
На самом деле все оказалось гораздо проще.


Я перевел все на библиотеку Tao и все стало работать на удивление быстро. Даже на слабых тачках.
На счет того что надо все прерисовывать.

Просто у меня десятки тысяч объектов, и каждый раз их надо просчитывать, просчитывать в зависимости от зума камеры от положения камеры и т.д.

все это может менятся за доли секунды и перезаписывать это все смысла нет. я просто просчитываю где камера, какой зум и какая область попадает в область видимости, потом обризаю все ненужно и вывожу.

Ну вопрос можно считать решенным, спасибо всем кто помогал. переход на библиотеку Tao помогла.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)