Конференция "Начинающим" » Оптимизация визуальной новеллы
 
  • WarlikeLaux (27.05.18 09:58) [0]
    Я делаю визуальную новеллу (интерактивная книга, картинка + текст внизу + музыка), у меня несколько вопросов
    1) Я храню все (текстовый файл со сценарием, картинки и музыку) в ресурсах, правильно ли это? Или при большом количеством данных могут быть проблемы? Как лучше делать? Загружать все из ресурсов на время выполнения или хранить на винте?
    2) Как можно ускорить выведение картинки в TImage, а то немного подлагивает, ну совсем, боюсь что дальше хуже будет.
    3) Из-за скинов AlphaControls (нужен скин один на несколько компонентов + сами компоненты AlphaControls) и у меня приложения весит на 16 мб больше (еще тысяча файлов .dcu с исполняемым файлом создается, ну лан, не тыща, крч 10 штук где-то), не уверен, что все из них используются приложением, так вот, можно как-нибудь удалить ненужную хрень, которую я не использую из AlphaControls, а то я чет уверен что я использую максимум 1 процент, от того что присасывается к моей игре(
  • kilkennycat © (27.05.18 19:41) [1]
    Ответить сложно.
    1) любой способ хранения - правильный, если он отвечает требованиям техзадания. Техзадание при этом не должно идти в разрез с общепринятыми правилами и особенностями операционных систем, аппаратных средств, среды разработки, возможностей пользователя и т.д. ТЗ не озвучено, поэтому неизвестно, правильно хранить в ресурсах или нет.
    2) Неизвестен текущий способ вывода картинки в TImage, поэтому невозможно сказать, как и можно ли вообще его ускорить.
    3) Можно. Переписать AlphaControls строго под свои нужды.
  • WarlikeLaux (27.05.18 20:03) [2]
    Насчет второго, сейчас я вывожу jpg картинку из ресурсов в TImage32 (библиотека Graphics32), хороший ли способ или можно еще быстрее выводить как-нибудь? Сейчас подлагиваний вроде никаких нет, но все равно, вдруг дальше при большом количестве картинок в ресурсах будут, а картинки принципиально хранить так, чтобы к ним никто не получил доступ, ну и текст тоже, поэтому самый лучший способ хранить их в exe или в отдельной dll?

    var
     Res: TResourceStream;
     jpg: TJPEGImage;
     bmp: array [1..3] of TBitmap;
     bmp32: TBitmap32;
    begin
     Res := TResourceStream.Create(hInstance, tmp, RT_RCDATA);
     bmp[1] := TBitmap.Create;
     bmp[2] := TBitmap.Create;
     bmp[3] := TBitmap.Create;
     bmp32 := TBitmap32.Create;
     jpg := TJPEGImage.Create;
     jpg.CompressionQuality := 100;
     jpg.LoadFromStream(Res);
     bmp[1].Assign(jpg);
     bmp[2].Width := Image32.Width;
     bmp[2].Height := Image32.Height;
     bmp[2].Canvas.StretchDraw(Rect(0, 0, bmp[2].Width, bmp[2].Height), bmp[1]);
     bmp32.Assign(bmp[2]);
     Image32.Bitmap := bmp32;
     bmp[1].Free;
     bmp[2].Free;
     bmp[3].Free;
     bmp32.Free;
     Res.Free;

  • kilkennycat © (27.05.18 21:52) [3]
    var
     RS: TResourceStream;
     JPGImage: TJPEGImage;
    begin
     JPGImage := TJPEGImage.Create;
     try
       RS := TResourceStream.Create(hInstance, 'имяресурсаджпег', RT_RCDATA);
       try
         JPGImage.LoadFromStream(RS);
         Image1.Picture.Graphic := JPGImage;
       finally
         RS.Free;
       end;
     finally
       JPGImage.Free;
     end;
    end;



    а всякие стретчи TImage и сам умеет.
    а массивы обычно создаются для удобства адресации по индексу. В цикле, например. А не как куча переменных, к тому же, даже в Вашем коде они лишние, достаточно одного:
    var
     Bmp: TBitmap;
    begin
     Bmp := TBitmap.Create;
     try
       Bmp.LoadFromResourceName(HInstance, 'имяресурсаджпег');
       Image1.Picture.Assign(Bmp);
     finally
       Bmp.Free;
     end;
    end;


    и даже если делать стретч вручную.
  • WarlikeLaux (27.05.18 22:03) [4]
    Ну насчет массива, а насчет загрузки картинки, Image32 принимает только Bitmap32, это библиотека Graphics32, я еле разобрался как туда загрузить картинку которая у меня jpg и свойства Stretch нету у Image32, но скорость, по крайней мере как мне написал человек, который с ней работает, да и я сам вроде как заметил, обработки фотографии выше, чем у того же TImage или TPaintBox
  • WarlikeLaux (27.05.18 22:03) [5]
    Насчет массива согласен*
  • kilkennycat © (27.05.18 22:33) [6]

    > обработки фотографии выше, чем у того же TImage или TPaintBox

    смотрим в самом вверху:

    > Как можно ускорить выведение картинки в TImage,

    и ни слова о каких-то обработках. а также графикс32.

    Формулируйте точнее. То, что кажется Вам очевидным - оно таким кажется только Вам.
  • WarlikeLaux (27.05.18 22:42) [7]
    Ну я же написал, что "Насчет второго, сейчас я вывожу jpg картинку из ресурсов в TImage32 (библиотека Graphics32)" во втором сообщении.
 
Конференция "Начинающим" » Оптимизация визуальной новеллы
Есть новые Нет новых   [134427   +34][b:0][p:0.002]