Текущий архив: 2007.09.16;
Скачать: CL | DM;
ВнизСоздание движка игры Найти похожие ветки
← →
netboy (2006-03-31 01:46) [0]Решил сделать 2D движок. Написал процедуры для работы с окном OpenGL. Надо сделать процедуры для работы со спрайтами.
Где можно достать материал по спрайтам (загрузкой, уничтожением, анимированием ...) в OpenGL ?
← →
XProger © (2006-03-31 01:52) [1]http://mirgames.ru
← →
Mortem © (2006-03-31 02:55) [2]http://reijii.mirg.ru
← →
XProger © (2006-03-31 02:59) [3]http://xproger.mirg.ru
← →
Nic © (2006-03-31 07:21) [4]http://worlds3d.mirg.ru
← →
Nic © (2006-03-31 07:22) [5]http://gamedev.ru
← →
antonn © (2006-03-31 07:51) [6]http://www.yandex.ru/
← →
DR0N © (2006-03-31 10:29) [7]http://dronprogs.mirgames.ru
← →
Mortem © (2006-03-31 11:47) [8]http://rambler.ru
← →
Sphinx © (2006-03-31 11:51) [9]Буга-га...повеселили =)
не буду отрываться от коллектива:
http://google.ru
← →
antonn © (2006-03-31 11:54) [10]http://www.koders.com/
← →
Nic © (2006-03-31 13:51) [11]http://worlds3d.narod.ru
http://nehe.gamedev.net
http://gamedev.net
http://delphigl.narod.ru
http://viv.fatal.ru
http://devmaster.net
http://delphi3d.net
http://delphigl.com
http://code.rpro.ru
http://sulaco.co.za
http://d3dengine.narod.ru
http://steps3d.narod.ru
http://dtf.ru
http://delphimaster.ru
http://opengl.org
http://microsoft.com
← →
antonn © (2006-03-31 15:32) [12]http://delphigfx.mastak.ru/
← →
Mortem © (2006-03-31 17:31) [13]http://code.darthman.com
← →
RzCoDer © (2006-03-31 20:01) [14]И только я догадаюсь спросить.А в OpenGL есть спрайты???
← →
Nic © (2006-03-31 21:42) [15]
> RzCoDer © (31.03.06 20:01) [14]
Очень легко сделать.
← →
Mortem © (2006-03-31 23:19) [16]
> RzCoDer © (31.03.06 20:01) [14]
Я-таки у вас сначала спршу сам:
1. Что, в вашем понимании, спрайты?
2. Что, в вашем понимании, OpenGL?
Когда ви-таки получите правильные ответы на эти вопросы, то неправильные вопросы не будут-таки кушать ваш мозг.
← →
Darthman © (2006-03-31 23:49) [17]http://code.rpro.ru уже давно не актуален, ввиду того, что владелец домена и сайта давно сменился, и там будет явно не то что вы ищите.
← →
RzCoDer © (2006-04-01 17:47) [18]
> 1. Что, в вашем понимании, спрайты?
> 2. Что, в вашем понимании, OpenGL?
Если бы я задавал эти вопоросы, задавал бы их в другом порядке, ну да ладно.
1. В моём понимании спрайт в 2д это некий тип данных заключающий в себя информацию о размере его плоскости, текстуре. В добавок класс спрайта может содержать процедуры: создания, перемещения, уничтожения и т.п.; свойтва: угла наклона, скорости, прозрачности, ну и ещё некоторые в зависимости от игры и её автора. Хорошим примером спрайта я считаю класс спрайта из DelphiX.
2. OpenGL - графическое API. То есть код обеспечивающий взаимосвязь программы и апаратной части.
Хоть я и ответил на Ваши вопросы, тем не менее изначальный вопрос автора темы кажется мне двойственным, неправильным. Если автора интересует работа со спрайтом как с классом - структурой содержащей информацию, (а именно это он и сказал:
> Надо сделать процедуры для работы со спрайтами.
)
то ему надо обращатся не в эту конференцию. Если же его интересует вывод графики, то причём тут спрайты? Ему нужна общая теория по текстурированию плоскостей в OpenGL, так бы сразу и говорил
.
← →
Mortem © (2006-04-01 18:47) [19]
> RzCoDer © (01.04.06 17:47) [18]
Извиняюсь, я несколько не правильно понял ваш пост [14]. ^___^
А вообще-то ему вполне в эту конфу. Т.к. спрайты так или иначе относятся к играм. Как и вывод графики. Так же как спрайты относятся к выводу графики.
Хотя с другой стороны - в конфе этому товарищу делать пока нечего - РАМБЛЕР для него сейчас более полезный ресурс.
P.S. По моему логично спрашивать именно в такой последовательности.
← →
WillRock (2006-09-27 11:56) [20]Да спрайты это все фигня и лирика...
Это можно без проблем найти..
я лично нашел много подобной инфы менее чем за час..
Проблема в другом.
Я забыл, как в Delphi сделать кдассный ООП )))
Кто может, пожскажите, как реализовать классы TSprite и TSpriteEngine, который управляет всеми спрайтами...
Буду очень признателен
← →
@!!ex © (2006-09-27 13:37) [21]WillRock (27.09.06 11:56) [20]
Пипец... По спрайтам инфы нашел дофига, а вот по ООП в дельфи нету...
Серьезно чтоли? :))
type
TSprite = class
public
Constructor Create();
end;
TSpriteEngine = class
public
Constructor Create();
end;
Никогда не видел такого? :))
← →
Nic © (2006-09-27 22:11) [22]
> WillRock (27.09.06 11:56) [20]
Тейксера и Пачеко рулят :)
← →
@!!ex © (2006-09-27 23:23) [23]Поздна ноченька..
Спать не хочется..
Нету повода не заморочится..
type
TSprite = class
public
Constructor Create(LifeTime,TextureID,FrameCount:integer);
Procedure Draw(x,y,z:GLFloat; cx,cy,cz:GLFloat; Frame:GLFloat);
end;
TSpriteArray = array[0..0] of TSprite;
PSpriteArray = ^TSpriteArray;
TSpriteEngine = class
public
Sprites:PSpriteArray
SpritesCount:integer;
Constructor Create;
Procedure AddSprite(LifeTime,TextureID,FrameCount:integer);
Procedure Update;
end;
Экспромт... буду рад адекватной критике.
← →
@!!ex © (2006-09-27 23:24) [24]Упс... Забыл задание координат перенести из отрисовки в конструктор спрайта....
← →
Darth (2006-10-02 01:03) [25]TSpriteArray = array[0..0] of TSprite;
Жжешь! 1 спрайт это сильно для системы спрайтов.
← →
Ketmar © (2006-10-02 01:08) [26]>[25] Darth 2-Oct-2006, 01:03
>Жжешь! 1 спрайт это сильно для системы спрайтов.
тяжело не знать основ, правда?
← →
Darth (2006-10-02 02:10) [27]Ketmar © (02.10.06 01:08) [26]
Видимо тяжело... Но не мне.
← →
Ketmar © (2006-10-02 03:46) [28]>[27] Darth 2-Oct-2006, 02:10
>Видимо тяжело... Но не мне.
да. тебе -- легко. и то правда: меньше знаешь -- крепче спишь...
← →
@!!ex © (2006-10-02 07:02) [29]>>Darth (02.10.06 01:03) [25]
Объяняю.
В данном случае(как вы могли заметить) используется не массив, а указатель на массив.
Можно было сделать просто указатель на TSprite, но в этом случае обращение к N-ому элементу было бы геморным.
Указатель же на массив позволяет работать с данными как с обычным массивом.
Возможно это не лучший подход, но лучше я не знаю.
Буду рад, если подскажете.
P.S.
array of TSprite
Это не лучший подоход, это ИМХО отстоейнейший подход.
← →
Ketmar © (2006-10-02 14:10) [30]>[29] @!!ex(c) 2-Oct-2006, 07:02
оставь его в покое. он же сам признался, что ему легко не знать основы. зачем усложняешь людям жизнь?
← →
@!!ex © (2006-10-02 14:47) [31]
> Ketmar © (02.10.06 14:10) [30]
Упс.. Неподумал... Каюсь.... Исправлюсь.
← →
Cash © (2006-10-02 16:32) [32]@!!ex © (02.10.06 07:02) [29]:
> Возможно это не лучший подход, но лучше я не знаю.
> Буду рад, если подскажете.
Мне вон TList нравится юзать, гы-гы-гы, но только не тот, что с Classes,
а тот, что я сам спаял. Чет он у меня при тех же операторах и конструкции
работает быстрее, чем стандартный. Структура на основе списка,
двусвязная, с добавлением и удалением в трех вариантах (FIFO,LIFO,
по индексу) и красивый и быстрый проход по индексам.
← →
Ketmar © (2006-10-02 17:04) [33]>[32] Cash(c) 2-Oct-2006, 16:32
>работает быстрее, чем стандартный.
код и бенчмарки в студию. %-)
← →
Cash © (2006-10-02 17:42) [34]С кодом обломаю, по жесткому :))) я жадный, до жути! :)))
А на счет тестов - 10 млн. добавлений и засекаем время. :)
Сперва там, потом тут, засекал по RDTSC, на преиод работы родного листа
проявлялась аномалия активности, мож конечно и другие процессы с
завидной постоянственностью начинали грузить камень, но я склонился к
тому, что это родной лист тратит драгоценное время. Там разница на
1024 добавлениях была всего в ~10%, то же самое и для удалений, а при
проходе по индексам мой лист тратил на переход к соседниму индексу
около 78-80% от времени родного листа.
← →
@!!ex © (2006-10-02 17:48) [35]Cash © (02.10.06 16:32) [32]
Было бы интересно посмотреть.
Про то как реализован список в дельфе ничего сказать не могу, стараюсь не пользоватся стандартными классами, поскольку приходится менять язык порграммирования часто и не хочется привыкать к каким то классам, которые есть только в конкретном языке или реализации.
1) Было бы интересно посмотреть на код
2) не вижу смысла в двухсвязном списке. Поскольку итерации в данном случае идут только в одноу сторону. удаление? В данном случае односвязный список работает отлично.
3) Список всегда работает медленнее чем вектор лежащей в одном кусе памяти, поскольку на одну меньше операция обращения к памяти. Хотя, конечно, разница в скорости минимальная и зависит от конкретной реализации.
4) Единственный минус вектора - перемещение памяти при изменении его размеров, лист по понятным причинам от такой проблемы избавлен.
Но есть способы серьезно уменьшить затраты вектора на выделение памяти, поэтому преимущества листа сомнительны.
← →
Ketmar © (2006-10-02 17:49) [36]"нет ручек -- нет и шоколадки" (ц)
пока нет кода -- всё это не более, чем трепёж в лунную ночь за пивком. %-)
← →
Darth (2006-10-02 17:54) [37]Мда, чтоже вы такие жестокие-то? С чего Вы вообще взяли, что я весь из себя такой зелененький ?
← →
Ketmar © (2006-10-02 17:58) [38]"добренькие" живут на других форумах. а здесь народ зубастый -- за глупость запинает. не взирая на личности. за что я и люблю сей форум.
← →
@!!ex © (2006-10-02 17:59) [39]
> Darth (02.10.06 17:54) [37]
Да не жестокие.
Не парься.
Со всеми бывает.
Я тут пару раз ого-го как лоханулся. Ну и фиг с ним. Зато опыта и знаний набрался.
← →
Ketmar © (2006-10-02 18:01) [40]>[39] @!!ex(c) 2-Oct-2006, 17:59
>Я тут пару раз ого-го как лоханулся.
не ты один. %-) многие получали "прочистку". а я сколько раз... %-)
Страницы: 1 2 вся ветка
Текущий архив: 2007.09.16;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.041 c