CRUSIS 9000

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: CRUSIS 9000

Сообщение hinst » 20.09.2013 19:42:44

я помню, ты что-то писал о некоем ручном подсчёте ссылок, можешь плз сказать, в каком файле у тебя код, ответственный за это? хочу сравнить с теми реализациями, над которыми я раздумывал
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 782
Зарегистрирован: 12.04.2008 18:32:38

Re: CRUSIS 9000

Сообщение runewalsh » 20.09.2013 20:06:15

hinst
ВНИМАНИЕ! КОНЦЕНТРАЦИЯ ВЕЛОСИПЕДОВ В МОДУЛЕ ЗАШКАЛИВАЕТ
https://sourceforge.net/p/rr-rr/code/45 ... m.pas#l257
Здесь это tObject и несколько функций после него. Писал уже довольно давно и не все решения показали себя удачными. Например, типичная работа со ссылкой выглядит как
Код: Выделить всё
link = MakeRef(QueryObject() {refcount = 0!} ); // refcount = 1
DoWork(link);
Release(link); // refcount = 0

а у нормальных людей —
Код: Выделить всё
link = QueryObjectRef(); // refcount = 1
DoWork(link);
Release(link); // refcount = 0

Сейчас мне мой вариант нравится меньше, выбрал его из-за "симметричности", что ли, более того, без дополнительных мер он потоконебезопасен — между QueryObject и MakeRef ссылка может застрять с refcount = 0, и если кто-нибудь в это время её захватит и освободит... Но парадигму я уже вряд ли буду менять глобально — просто тем немногим функциям, которые должны потокобезопасно возвращать reference-counted объект, меняю поведение на второй вариант. (пример).
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 411
Зарегистрирован: 27.04.2010 00:15:25

Re: CRUSIS 9000

Сообщение runewalsh » 22.09.2013 00:58:15

Научился паковать атласы (http://clb.demon.fi/files/RectangleBinPack.pdf).
Вложения
atlas.jpg
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 411
Зарегистрирован: 27.04.2010 00:15:25

Re: CRUSIS 9000

Сообщение runewalsh » 23.09.2013 20:46:28

Курю freetype.
Onryou — такой-то шрифт, а русский для галочки прикрутили.
Вложения
test.png
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 411
Зарегистрирован: 27.04.2010 00:15:25

Re: CRUSIS 9000

Сообщение runewalsh » 25.09.2013 01:24:06

Вменяемые TrueType-шрифты в адаптивных ленивых атласах, не то что раньше.
Вложения
t2.png
24.09.2013 23:07:03.612.jpg
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 411
Зарегистрирован: 27.04.2010 00:15:25

Re: CRUSIS 9000

Сообщение Mirage » 25.09.2013 16:50:35

Что, и кернинг поддерживается?
Даёшь сорцы на GitHub!
FreeType, кстати какой версии? Тот, что на паскаль портирован или сишная либа?
Mirage
энтузиаст
 
Сообщения: 829
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: CRUSIS 9000

Сообщение runewalsh » 26.09.2013 02:55:33

Mirage писал(а):кернинг

Угу, только что добавил поддержку кернинговых пар.
Mirage писал(а):FreeType, кстати какой версии? Тот, что на паскаль портирован или сишная либа?

Последней стабильной с их сайта (2.5.0.1 или какая там), заголовок скопипастил руками из API reference — во-первых, только то, что нужно, во-вторых, чтобы наружу выставить сразу обёртку. https://sourceforge.net/p/rr-rr/code/45 ... eeType.pas
Вложения
[2013-09-26] inequality.png
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 411
Зарегистрирован: 27.04.2010 00:15:25

Re: CRUSIS 9000

Сообщение runewalsh » 02.10.2013 22:21:37

Вынес оконный цикл в отдельный поток. Просьба потестить вообще, а особенно на XP с window.allowMT = true в конфиге.
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 411
Зарегистрирован: 27.04.2010 00:15:25

Re: CRUSIS 9000

Сообщение debi12345 » 03.10.2013 00:49:28

Научился паковать атласы (http://clb.demon.fi/files/RectangleBinPack.pdf).

Хм, не знал, что даже под это подвели научную базу. Взято на заметку.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 4161
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: CRUSIS 9000

Сообщение runewalsh » 03.10.2013 03:49:29

debi12345
...Насколько эмпиричненькой такой эвристике подходит описание "научная база". ^^"
Завтра покурю кондишон вариэйблс короче.
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 411
Зарегистрирован: 27.04.2010 00:15:25

Re: CRUSIS 9000

Сообщение debi12345 » 04.10.2013 11:16:15

Если бы еще можно было расставлять картинки не в порядке убывания или возрастания размера, а псевдо-рандомно...

Добавлено спустя 4 минуты 55 секунд:
Хотя ипользуя мощь современных компов, можно любые относитель небольшие расстановки и прочие законы распределения делать просто перебирая случайные варианты, пока не выпадет нужный - еснно с заданной погрешностью (иначе возможен бесконечный цикл). Именно так в свое время сделал симулятор гауссового распределения - эмулятор эспериментальных "измерений" под заданный конечный результат :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 4161
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: CRUSIS 9000

Сообщение runewalsh » 07.10.2013 00:38:47

debi12345 писал(а):делать просто перебирая случайные варианты

Замечательное решение NP-сложной задачи, ага. Особенно когда элементов меньше 5. ;3

Переписал события на condition variables (Vista+). В 2 раза быстрее, так-то.
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 411
Зарегистрирован: 27.04.2010 00:15:25

Re: CRUSIS 9000

Сообщение runewalsh » 08.10.2013 03:40:32

ВНЕЗАПНО! Добавил в движок сущность condition variable наравне с event и почти всё на них переписал. CV — классные.
P.S. CV на XP эмулируются ивентами, ивенты на Vista+ эмулируются CV. :‐) Embarcadero так умеет?
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 411
Зарегистрирован: 27.04.2010 00:15:25

Re: CRUSIS 9000

Сообщение kipar » 08.10.2013 18:10:19

runewalsh писал(а): CV на XP эмулируются ивентами

Embarcadero умеет.
Код: Выделить всё
InitializeConditionVariableProc := GetProcAddress(Module, 'InitializeConditionVariable'); // do not localize
  if @InitializeConditionVariableProc = nil then
  begin
    InitializeConditionVariableProc := InternalInitConditionVariable;
...

В обратную сторону видимо нет, хотя вроде есть TConditionVariableMutex.
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54

Re: CRUSIS 9000

Сообщение runewalsh » 08.10.2013 18:31:32

kipar писал(а):Embarcadero умеет.

:OKAY:
В обратную не особо и нужно, на самом деле — заметно быстрее "ядерных" ивентов, но пролетают MsgWait* и, отчасти, WaitForMultipleObjects.
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 411
Зарегистрирован: 27.04.2010 00:15:25

Пред.След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru