Перейти к содержанию
Fire Monkey от А до Я

Mars M

Пользователи
  • Постов

    63
  • Зарегистрирован

  • Посещение

  • Победитель дней

    4

Весь контент Mars M

  1. Даже не знаю. Но скорее всего пойдет.
  2. Тема старая, но вот тоже понадобилось работать с запаролеными zip архивами в Windows. Наткнулся на это http://www.uweraabe.de/Blog/2017/05/07/tzipfile-with-password-encryption-part-3/ Там статья из трех частей. Если кратко то в третьей части можно скачать конечный результат модуля, во второй, в комментах есть пример работы. Все в сборе приаттачил к сообщению Проверил, вроде работает. Из минусов если добавлять в архив папку с файлами(ZipDirectoryContents) то файлы не паролятся, ну это не проблема. ZipTest.rar
  3. Спасибо, наверное возьму этот пример за основу
  4. Что никто не встречал подобного? Переношу один старый проект на FMX, оказалось сложней чем предполагал. Но отступать уже поздно Одна из проблем как раз отсутствие hex реактора. В принципе нужен даже не редактор а просмотрщик с минимальными возможностями редактирования.
  5. Вот тут есть пример где объект перемещается в позицию клика мыши.
  6. Mars M

    TListBox MultiSelect

    Такая проблема - есть ListBox, MultiSelectStyle выставлен в None. Вроде все нормально, но если выделить какой нибудь итем, потом правой кнопкой кликнуть по любому итему то выделенный итем так и останется выделенным, даже если выбрал уже другой. Это косяк листбокса или так и должно быть и как это обойти?
  7. Mars M

    Hex редактор

    Нужен компонент Hex редактора для FMX. Поиском ничего не нашел. Когда то бы прекрасный компонент TMPHexEditor, но сейчас найти подобное для FMX думаю не реально. Или может кто сам подобное делал и посоветует чего:
  8. Кинул на ScrollBox несколько TExpander, если у всех свойство isExpanded := True то все нормально. Если у какого выставить в false то с ним во время выполнения программы начинаются проблемы, может не раскрыться или исчезнуть заголовок. IDE Delphi Tokyo 10.2, в предыдущих версиях не проверял. Отрыл проект из папки samples, там у всех TExpander установлено true, если устанавливаю в false то тоже такая же проблема. Проблема только в Токио или во всех версиях так? PS: пока вышел из положения вот так. Выставил у всех isExpanded := True и в onCreate формы добавил for i := 0 to ComponentCount - 1 do if Components[i] is TExpander then TExpander(Components[i]).IsExpanded := False; Работает конечно, но в дальнейшем могут быть неудобства, нужно будет проверять какие нужны раскрыты а какие нет.
  9. denprox, твое желание сделать по проще понятно. Но нужно понимать что если ты делаешь проще для себя, то усложняешь все для пользователя Имхо, сделать свой редактор карт будет лучшей идеей, во первых ты будешь точно знать что потом будет загружаться в игру, во вторых упростишь все для пользователя, а это главное Редактор можно сделать примерно по такому принципу. Далее в игре На самом деле все проще чем кажется, к тому же убиваем еще одного зайца, код получается кроссплатформенным. Хотя тут утверждать не буду, на Токио у меня проекты под андроид не собираются а других девайсов нету
  10. Сделать так что бы были известны Создай что то типа редактора карт, где пользователь сможет выбрать текстуру, задать размеры и положение, потом сохранить все это в файл. А потом в игре отрывать его и будет известно все что нужно. Для примера, создать запись(record) type TMap = record Texture: string[255]; wallRect: TRectF; targetRect: TRectF; winRect: TRectF; RadArr: array[0..3] of Single; ClrArr: array[0..3] of TAlphaColor; end; Пользователь во время создания/редактирования карты заполняет его. ............... var Map: TMap; ............... Texture := 'wall.bmp'; wallRect := TRectF.Create(0, 0, 20, 50); ............... ............... Сохраняем в файл var mStream: TMemoryStream; begin mStream := TMemoryStream.Create; mStream.Write(Map, SizeOf(TMap)); mStream.SaveToFile('maps\tire.dat'); mStream.Free; end; В игре создаем точно такую же запись(record) как и в редакторе, загружаем сохраненный файл с параметрами и заполняем из него запись var mStream: TMemoryStream; Map: TMap; begin mStream := TMemoryStream.Create; mStream.LoadFromFile('maps\tire.dat'); mStream.Read(Map, SizeOf(TMap)); mStream.Free; end; В таком случае будут все нужные параметры известны, и примерно так же в играх и делают.
  11. Описание того что нужно как то расплывчато, но вот примерно так можно сделать. Всего один TImage который используется для отрисовки битмапов. Видео и проект Tire.rar
  12. Возможно эта ссылка тоже будет полезной http://www.partow.net/projects/fastgeo/
  13. В общем свой вопрос решил. Вышеописанные функции удобны для работы с координатами. И подошли бы мне если бы нужно было перемещать саму модель, но в моем случае нужно работать только с камерой, а это значит что нужно постоянно учитывать ее положение. Короче слишком много математики для фичи которая будет только для того что бы была Но к счастью есть свойство ScreenBounds, которое все сделает за меня. Вот обновленный пример, по правой кнопке куб вписывается в окно, что мне и нужно. https://yadi.sk/d/KVJFHajd3J9ALD Projects.rar
  14. Есть такие функции LocalToAbsolute3D и AbsoluteToLocal3D С первой разобрался(пример), со второй тоже в принципе ясно. Осталось только разобраться как это применить PS: пример честно скопипастил отсюда у него там есть и другие интересные проекты. https://github.com/LUXOPHIA/Sketch3D Projects.rar
  15. Спасибо, гляну, может что и найду там Вот тут тогда тоже может быть то чего нету в примерах https://sourceforge.net/p/radstudiodemos/code/HEAD/tree/trunk/Object Pascal/
  16. Mars M

    2D<>3D координаты

    Возможно название темы не правильно задал, но просто не понимаю сути вопроса Есть ViewPort3D, на нем TDummy, на котором рисую модель. Вопрос вот в чем, модель может быть как большая, так и маленькая, как мне вписать ее в размеры ViewPort3D? Разумеется все максимальные и минимальные координаты модели мне известны, но вот как их использовать не могу сообразить.
  17. Подниму тему. CUDA конечно хорош(а?), но только для nvidia. Наткнулся тут на работу с OpenCL в делфи http://www.delphisources.ru/forum/showthread.php?t=28188 Там по ссылке в первом сообщение в принципе все есть что нужно. Кому оттуда не удобно перезалил все файлы https://yadi.sk/d/t3mPqlJT3HnfiX Вот пример использования https://yadi.sk/d/bmDKXZ0k3Hnfny Проверял на картах nvidia и ati, конечно же карты должны поддерживать OpenCL. Если в MyOpenCL.pas чего то не хватает, можно взять это в CL.pas из GLScene https://sourceforge.net/p/glscene/code/HEAD/tree/trunk/Source/ParallelAPIs/ Я например добавил константу CL_DEVICE_LOCAL_MEM_SIZEэ А можно использовать родные CL.pas и CL_Platform.pas, в первом архиве есть пример использования. В архиве как раз есть рабочий пример вычислений
  18. Вот так вот вроде работает: Только нужно будет закомментировать строчку assert(sizeof(TCudaDeviceProp) = 540, 'sizeof(TCudaDeviceProp) <> 540');
  19. Проще таскать с собой наверное. Иначе придется отслеживать какая версия у пользователя, ну и разницу в версиях учитывать в коде.
  20. Скачал с инета cudart32_41_28.dll, с ней все нормально. Мне кажется что запись TCudaDeviceProp в разных версиях пишется по разному.
  21. Спасибо, ссылки в любом случае полезные. Но, если я правильно понял, там придется SDK устанавливать на клиентском компе.
  22. Теперь вот окончательно разобрался что к чему Ошибку в коде что я писал уже появилась после того как я код переделал что бы буферы векторов и индексов делить на части. Думая что ошибка найдена я вернул все к первоначальному виду и тут та же проблема. В общем наткнулся в исходниках fmx на метод Create для индексного буфера. TIndexBuffer.Create(const ALength: Integer; const AFormat: TIndexFormat = TIndexFormat.UInt16); Из которого стала понятна причина проблемы При создании буфера указал TIndexFormat.UInt32 и первоначальный код заработал без проблем. Возможно плохо искал, но сколько инет перерыл не попадалось про это. Хотя на gamedev.ru читал про тоже самое но касательно OpenGL, но не обратил внимание
  23. Как можно узнать размер видеопамяти под WIN? В инете находятся решения через реестр, с помощью DX и другие, но все сообщения старые. Может есть какой способ узнать средствами FMX?
×
×
  • Создать...