| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование игр, графики и искусственного интеллекта > Медлено рисует 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 Но политика 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 помогла. |