Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2010, 17:36   #1
saggy
Форумчанин
 
Регистрация: 08.10.2009
Сообщений: 112
Злость OpenGL...Игры без тормозов...Как?!

Как?! Как можно сделать игру, которая не будет тормозить?!
Я попытался сделать два самолётика - одним управляешь, другой летит вперёд самостоятельно. 2D. Кол-во полигонов в каждом самолётике не больше 5. Самолётики одинковые. Никаких текстур. Обновление каждые 24 кадра. Какого хрена нагрузка на цп 90%?!!
Это так бесит потому что я хотел сделать игру на канве - нагрузка по максимому. Говорили канва это бред, юзай OpenGl или DirectX. Там намного быстрее и лучше графика. Я прочитал этот долбанный OpenGL, но тормозит ещё сильнее! Это бесит!
Я конечно понимаю, может не доучил и не дописал какую нибудь функцию и по эотму тормозит. Но больше всего вероятно из-за многочисленных вычислений с tmemo. Дело в том что все координаты полигонов у меня записаны в мемо. Для того, что бы сдвинуть свой самолётик в какую-либо сторону, нужно проделать около 10 операций с задачей новых координат. Эти операции производятся в основном так: мемо-strtofloat-+XY-floattostr-мемо
Если тормоза из-за мемо, то с помощью чего и где хранить информацию для вывода на экран? Помогите.
зы: 4 дня писал и оказалось хуже чем на канве...бесит!!!!
зы: если управляешь только своим самолётиком то нагрузка не болье 5% о_О
procedure life; for years := 1 to 11 do gotoschool(normal); woman := TMan.add; childrens.add(TMans); problems.add(fuck); woman.destroy; END.

Последний раз редактировалось saggy; 02.07.2010 в 17:39.
saggy вне форума Ответить с цитированием
Старый 02.07.2010, 18:29   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы как GL инициализируете?

а вы в играх выводите информацию на экран?))
сомневаюсь, так что попробуйте не выводить, храните инфу в нормальных переменных, и эти переменные выводите в label(а не храните все в тексте)
тогда будет лишь IntToStr(и подобное)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 02.07.2010 в 18:35.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.07.2010, 18:41   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Но больше всего вероятно из-за многочисленных вычислений с tmemo. Дело в том что все координаты полигонов у меня записаны в мемо.
Че, с ума там посходили, чтоли? Если так хочется текст, то юзаем TStringList. Но блин, юзать тормознутый memo с его тормознутым получением текста - это бред сумасшедшего.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.07.2010, 19:23   #4
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

Цитата:
около 10 операций с задачей новых координат. Эти операции производятся в основном так: мемо-strtofloat-+XY-floattostr-мемо
Конвертация тоже лишняя нагрузка. сделай массив записей нужной структуры, чтоб не конвертировать туда-сюда.
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 02.07.2010, 19:37   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

А я всегда говорил, что начинать программировать с кнопочек-формочек - зло
пыщь
JTG вне форума Ответить с цитированием
Старый 02.07.2010, 20:23   #6
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

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

Цитата:
Сообщение от saggy Посмотреть сообщение
зы: если управляешь только своим самолётиком то нагрузка не болье 5% о_О
Правильно заданный вопрос, всегда содержит в себе ответ. Как у вас реализовано управление? Через keypress?
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"

Последний раз редактировалось AlDelta; 02.07.2010 в 20:26.
AlDelta вне форума Ответить с цитированием
Старый 02.07.2010, 21:53   #7
saggy
Форумчанин
 
Регистрация: 08.10.2009
Сообщений: 112
По умолчанию

Ого, спасибо всем за советы )))
Зы: не надо говорить что я сошёл с ума, пользуясь мемо. я не знал что он медленный.
Дрова у меня "прямо" стоят.
Вот я заменил мемо на массив строк, и ура! нагрузка уменьшилась до 5%
Спасибо за советы
а насчёт того что б под каждый тип свою переменную...долго возиться и плохо запоминается и вообще не воспринимается на вид, меня устраивает теперь скорость массива строк.
procedure life; for years := 1 to 11 do gotoschool(normal); woman := TMan.add; childrens.add(TMans); problems.add(fuck); woman.destroy; END.
saggy вне форума Ответить с цитированием
Старый 02.07.2010, 22:05   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

поверьте массив данных(структур и тд, куда лучше строк).
потом когда у вас будет много данных, время на конвертацию станет серьезным.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.07.2010, 22:54   #9
saggy
Форумчанин
 
Регистрация: 08.10.2009
Сообщений: 112
По умолчанию

хм...над этим стоит задуматься. Если у меня будет столько объектов, что превысят 70% нагрузки, я перейду, конечно, на массивы по отдельным типам.
procedure life; for years := 1 to 11 do gotoschool(normal); woman := TMan.add; childrens.add(TMans); problems.add(fuck); woman.destroy; END.
saggy вне форума Ответить с цитированием
Старый 02.07.2010, 22:55   #10
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Это нужно делать на начальной стадии проекта - когда у вас накопится огромное количество объектов вы просто не захотите все переписывать.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
игры без графики (Delphi + Flash\ActionScript) RUSt88 Общие вопросы Delphi 3 12.02.2010 01:12
Продолжая тему тормозов компа doniyor Операционные системы общие вопросы 5 15.12.2009 18:51
Хочу начать писать игры на OpenGL lionbeast Помощь студентам 2 02.10.2009 11:04