SerhioUser

Пользователи
  • Публикации

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

  • Посещение

О SerhioUser

  • Звание
    Продвинутый пользователь
  • День рождения 12.02.1975

Информация

  • Пол
    Мужчина

Посетители профиля

167 просмотров профиля
  1. Это библиотека интегрируется в андроид 1 раз. После этого все arm-программы смогут работать на этом устройстве с x86 процессором. Правда в несколько раз медленнее.
  2. На Lenovo Yoga было уже предустановлено в систему. Т.е. Lenovo побеспокоилось, чтобы пользователи их девайсов могли запускать не только ява-программы, но и проги с arm-NDK. Как обстоят дела в устройствах других фирм я, к сожалению, не знаю.
  3. Нажимаю в студии F9. Программа компилится, деплоится, и стартует. При условии, что на андроид-девайсе установлен "libHoudini".
  4. На странице http://developer.android.com/tools/debugging/debugging-memory.html найди крупную строку "Device Monitor". Чуть ниже есть скрин этого монитора. Там выделены кнопки 1 и 2, который нужно нажать и закладка "Heap", на которую нужно стать. Как по мне, похожие на правду цифры в мегабайтах. Однако, много это или мало, и как вычислить утечки пока не понятно. Но все таки уже хоть что-то.
  5. Обнаружил (для себя) интересную стандартную тулзу. Небольшое описание есть здесь: http://developer.android.com/tools/debugging/debugging-memory.html Может кому еще пригодится. Находится она у меня тут: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\tools\lib\monitor-x86\monitor.exe и тут: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\tools\lib\monitor-x86_64\monitor.exe Для других версия API и студии, будет аналогичный путь с мелкими отличиями. Тулза просто так не запустилась. Нужно было в её папке создать еще такое: "jre\bin" и скопировать сюда файл "javaw.exe", который нашел здесь: C:\Program Files (x86)\Java\jre1.8.0_60\bin 64 битная версия нашлась соответственно здесь: C:\Program Files\Java\jre1.8.0_66\bin С помощью этой тулзы наконец-то увидел используемые моей прогой ресурсы - CPU, mem, threads и т.д.
  6. Не хотелось бы так... Хоть код и не зависит от библиотеки (в целом), но все же мелкие различия могут быть, которые нужно за#ifdef-ить. Также Например инклуды для разных платформ/библиотек разные, и либы могут подключаться в зависимости от них.
  7. Всем доброе время суток. Делаю "универсальный" компонент для обоих библиотек на C++ Builder. Наследник от TComponent. Функционал компонента НЕ зависит от визуальной библиотеки и весь код прописывается в одном файле. Попробовал создать 2-а пакаджа. В каждом из них создал пустой компонент, каждый под свою платформу. Имя у компонентов одинаковое. 1-ый пакадж установился, 2-ой нет. Студия сказала, что компонент с таким именем содержится в 1-ом пакадже. Вопрос: как правильно создать пакаджи, чтоб компонент был доступен и для VCL-форм и для FMX-форм и имел одинаковое имя? Например UniDac компоненты видны для обоих библиотек и имеют одинаковые имена и для VCL и для FMX.
  8. Спасибо за ответ! Попробовал "дрыгание". К сожалению костыль не помог. Даже выяснилась бОльшая проблема: Похоже сама TForm3D не рефрешит то, что на ней. Стандартный пример "AnimationDemo3D" из папки "Samples\CPP\FireMonkey Desktop" под OSX не отрисовывает анимацию. Только если подвигать всю форму туда-сюда за пределы экрана, появляются фрагменты кадров анимации. PaintRects и Invalidate не помогло. Похоже вырисовывается серьёзный косяк в XE8. Кто-то может запустить-проверить это демо у себя на маке или хакинтоше?
  9. И тишина... Огромная просьба - если кто-то может делать баг-репорты в Embarcadero, запостите, пожалуйста вышеописанную проблему!!! К сожалению с триалом на баг-репорт меня не пускают. И если у кого есть другая версия OSX - можете подтвердить (или опровергнуть) этот баг? Всем спасибо!
  10. Здравствуйте всем! Проверял на OS X - Mountain Lion 10.8.3 После Map/Unmap-обновления картинки, изображение на 3D-форме с TImage3D не обновляется. Вот простой пример - TestMap.zip - по таймеру заносит шум в TImage3D.Bitmap. В XE7 работает и под Win32 и под OSX. В XE8 под win32 работает, а под OSX отображает белый фон. Если над формой провести каким-то другим окном, то в этом месте картинка, т.е. ее часть (в нашем случае шум), отрисовывается. Тоже самое если нашу форму вывести за экран и потянуть обратно - в местах появления формы отображается часть нашей картинки (шума). BeginUpdate/EndUpdate и Repaint результата не дали. XE8 Update1 - тоже самое. Как сие побороть? (Обычный TImage отрабатывает нормально).
  11. Так. Сорцекопание выявило, что за сортировку 3d-объектов отвечает класс TRenderingCompare и код находится в методе TCustomForm3D.RebuildRenderingList. procedure TCustomForm3D.RebuildRenderingList; var I: Integer; CompareFunc: TRenderingCompare; begin if Assigned(Children) and (Children.Count > 0) and (FUpdating = 0) then begin if Not Assigned(FRenderingList) then FRenderingList := TList<TControl3D>.Create; FRenderingList.Clear; for I := 0 to Children.Count - 1 do if (Children[i] is TControl3D) then FRenderingList.Add(Children[I] as TControl3D); CompareFunc := TRenderingCompare.Create; try FRenderingList.Sort(CompareFunc); finally CompareFunc.Free; end; end; end; Никаких условий - просто сортировка без вариантов. А вот код, собственно, проверки для сортировки: function TRenderingCompare.Compare(const Left, Right: TControl3D): Integer; var V1, V2: TPoint3D; begin Result := Integer(Left.GetMaterialForSorting) - Integer(Right.GetMaterialForSorting); if (Result = 0) and Left.ZWrite and Right.ZWrite then begin if (Left.Opacity < 1) and (Right.Opacity >= 1) then Result := 1 else if (Left.Opacity >= 1) and (Right.Opacity < 1) then Result := -1 else if (Left.Context <> nil) and (Right.Context <> nil) then begin V1 := TPoint3D(Left.AbsolutePosition) - TPoint3D(Left.Context.CurrentCameraMatrix.M[3]); V2 := TPoint3D(Right.AbsolutePosition) - TPoint3D(Left.Context.CurrentCameraMatrix.M[3]); Result := Trunc(V2.Length - V1.Length); end; end; end; Как видно если ZWrite = false, 3D-объекты НЕ СОРТИРУЮТСЯ и находятся в порядке создания на форме. Список находится в приватной переменной FRenderingList, к которой мы не можем получить доступ даже сделав наследника от TForm3D. Ладно. FRenderingList заполняется из списка TFmxChildrenList.Children, до которого мы можем достучаться. Но его массив Items[] доступен только на чтение. Посему повлиять на его порядок мы тоже не можем. Пока что единственный выход, который я нашел - подключать к проекту копию исходника "FMX.Forms3D.pas" и корректировать его под свои нужды. (Под Mac OS X такой финт не работает - берется стандартный "FMX.Forms3D.pas") А ведь достаточно было бы сделать RebuildRenderingList виртуальной и хотя-бы в protected секции. Ну а лучше, думаю, было бы кустомизировать TRenderingCompare класс. Может кто знает лучший вариант?
  12. К сожалению у 3D-контролов нельзя (ну или я не знаю как) жестко указать Z-Order. У FMX алгоритм размещения в Z-плоскости при ZWrite=false мне пока не ясен.
  13. Как задать Z-последовательность 3d-объектов, например TImage3D, у которых ZWrite=false. Пробовал менять Position.Z - не помогает. Картинка становится маленькая и "далеко", но если она была поверх другой, то так сверху и остается. Как уже где-то писали BringToFront и SendToBack не работают. Но OpenGL ведь отрисовывает их последовательно. Значит где-то есть этот порядок. Как до него добраться?
  14. Спасибо. Это уже что-то. Но нужно получить примерно вот такое: То есть смасштабировать вписанное изображение, а не просто обрезать по TPath.