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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2010, 17:27   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Быстрый поиск текстуры по имени

В данный момент пересоздаю систему отрисовки. Расклад такой - Программист Пользователь вызывает функцию CreateTexture или LoadTexture и получает номер в каталоге, который это текстура получит. И далее он уже отрисовывает текстуру, только называя её номер.

Нужно ли добавить такое свойство текстуре, как имя и вызов по имени? В принципе сейчас пользоваться нужно так:
Код:
Var
 Dodge : Integer;
Begin
 Dodge := LoadTexture(Form1, 'C:\DodgeViper.bmp')
 Draw(Form1, Dodge, 0, 0, FALSE);
 BufferDraw(Form1);
 DestroyTexture(Form1, Dodge);
End;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 06.11.2010 в 17:34. Причина: ; != ,
Alex Cones вне форума Ответить с цитированием
Старый 06.11.2010, 17:36   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Draw(Form1, Dodge; 0, 0, FALSE);
Ээээ..А что здесь делает точка с запятой?
Цитата:
Нужно ли добавить такое свойство текстуре, как имя и вызов по имени? В принципе сейчас пользоваться нужно так:
Ну а в целом идея очень даже ничего, это лучше, чем рисовать используя Bitmap.
_-Re@l-_ вне форума Ответить с цитированием
Старый 06.11.2010, 17:42   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Ээээ..А что здесь делает точка с запятой?
Исправил за 2 минуты до Вашего поста
Цитата:
Ну а в целом идея очень даже ничего, это лучше, чем рисовать используя Bitmap.
Есть несколько причин, почему я не хочу этого делать:
1) При отрисовке с указание имени придется сначала найти текстуру по такому имени, потом отрисовать.
2) В принципе система предназначена только для одного:
Код:
Begin
 LoadTexture(Form1, 'C:\DodgeViper.bmp', 'Dodge');
 Draw(Form1, 'Dodge', 0, 0, FALSE);
 BufferDraw(Form1);
 DestroyTexture(Form1, 'Dodge');
End;
Т.е. мы не храним у себя переменную/номер текстуры с доджем, а вызываем по имени..
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 06.11.2010, 17:46   #4
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Код:
Begin
 LoadTexture(Form1, 'C:\DodgeViper.bmp', 'Dodge');
 Draw(Form1, 'Dodge', 0, 0, FALSE);
 BufferDraw(Form1);
 DestroyTexture(Form1, 'Dodge');
End;
А-а-а-а....Теперь понял.
Это ещё лучше чем я думал. Не объявлять переменные для работы с текстурой - это просто замечательно.
_-Re@l-_ вне форума Ответить с цитированием
Старый 06.11.2010, 17:51   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Считаю, что это не нужно.
Допустим, над проектом работает не один человек, а команда.
Тогда вам придется думать над пространствами имен, так как могут быть конфликты с названиями текстур. Гораздо лучше хранить указатель на экземпляр класса. Ну или как в вашем случае, уникальный идентификационный номер элемента.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 06.11.2010, 17:52   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Да, с одной стороны хорошо. А теперь представьте, что делаете игру 1024 х 768, частота обновления 24 fps. Если Вы будете рисовать например по-блочно как в "Марио":
Код:
В циклах: 
If A[X,Y] = 55 Then Draw(MainForm, 'tree', X * 32, Y * 32, FALSE);
Моей системе для такой отрисовки сначала придется найти текстуру по имени (перебирая), потом только отрисовать.

Хотя, если пользователю понадобится быстрая отрисовка - пусть не выпендривается и пользуется числами. А если удобная - то буквами.
___________________________UPD

Как бы то ни было добавил две версии функций - по имени и номеру.
Код:
 Function CreateTexture(Var Form : TForm; Width, Height : Integer) : Integer; OverLoad;
 Function CreateTexture(Var Form : TForm; Width, Height : Integer; TName : String) : Integer; OverLoad;
 Function LoadTexture(Var Form : TForm; FileName : String) : Integer; OverLoad;
 Function LoadTexture(Var Form : TForm; FileName : String; TexName : String) : Integer; OverLoad;
 Function DestroyTexture(Var Form : TForm; Number : Integer) : LongBool; OverLoad;
 Function DestroyTexture(Var Form : TForm; TName : String) : LongBool; OverLoad;
 Procedure Draw(Var Form : TForm; TNum : Integer; X,Y : Integer; TFlag : LongBool); OverLoad;
 Procedure Draw(Var Form : TForm; TName : String; X,Y : Integer; TFlag : LongBool); OverLoad;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 06.11.2010 в 19:43.
Alex Cones вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрый поиск в TADODataSet в run-time NikSestrin БД в Delphi 2 10.08.2009 14:36
Быстрый поиск в таблице k1r1ch Общие вопросы Delphi 7 07.07.2009 14:57
Быстрый поиск в AIMP2 Altera Софт 1 01.12.2008 06:39
Быстрый поиск по индексу valerij Microsoft Office Excel 1 21.04.2008 11:04