Войти
ПроектыФорумУтилиты

2D Движок Quad-engine v0.9.0 (Delphi, Freepascal, C#, C++) (13 стр)

Страницы: 112 13 14 15 16 Следующая »
#180
12:39, 28 июня 2017

перед тем как делать
quadTimer->Release();
имеет смысл его остановить сначала. Он в этом случае завершит цикл свой, дождется этого момента когда весь онтаймер отработает, после чего прибьет поток. После этого можно уже смело релизить.
Никаких утечек не будет в этом случае.


#181
14:43, 28 июня 2017

примерно так?

quadTimer->SetState(false);
quadTimer->ResetWholeTimeCounter();
quadTimer->SetCallBack(nullptr);
quadTimer->Release();
Up: ^вот так вроде работает

#182
14:44, 28 июня 2017

Прикольно. В почту падают письма с другим текстом (возможно до правки).
Да, примерно так.

#183
15:24, 28 июня 2017

Иногда все-таки проскакивало исключение. Вот такой костыль вроде более надежно помогает:

quadTimer->SetState(false);
Sleep(1000);
quadTimer->ResetWholeTimeCounter();
Sleep(1000);
quadTimer->SetCallBack(nullptr);
Sleep(1000);
quadTimer->Release();

#184
15:44, 28 июня 2017

quadTimer->ResetWholeTimeCounter();
quadTimer->SetCallBack(nullptr);
Вот это совершенно лишнее

#185
15:53, 28 июня 2017

ок.

#186
3:27, 29 июня 2017

Попробовал собрать дллку для партиклов и редактор. Сама дллка завелась вроде на примере для дельфи. А вот редактор что-то не особо :( Куча AV, при сборке куча ворнингов о возможно не инициализированных переменных... есть стабильный собранный редактор?

#187
11:34, 29 июня 2017

С редактором эффектов частиц все плохо. Он у меня пока в ранней стадии разработки, а доделать руки что-то не доходят (

Нашел старую более менее работающую версию, которая иногда падает, а при выходе выдает кучу АВ. Но вроде как поделать что-то можно.
https://drive.google.com/open?id=0B57SZexuoWVaSk5uVlZSSjVGUGc

Есть еще видосик, как я делаю эффект взрыва из демки.
https://www.youtube.com/watch?v=Ctiwg_Ht2UM

#188
17:36, 29 июня 2017

Zbl
ок, спасибо, сейчас потыкаюсь

#189
13:04, 30 июня 2017

Пытаюсь что-нибудь вывести не используя методы рисования текстуры(хочу интегрироваться потом с мэджик партиклс)
Но что-то делаю не так. Черный экран(буфер каждый раз заполняется заново но это для теста не критично):

  quadRender->BeginRender();
  quadRender->Clear(0xFF000000);  

  quadRender->SetBlendMode(qbmSrcAlpha);
  quadRender->FlushBuffer();

  for (int i = 0; i < 8; i++) 
    quadRender->SetTexture(i, texLogo->GetTexture(i));

  for(int i = 0; i < 4; i++)
  {
    TVertex vert;
    vert.normal.x = 0.0f;
    vert.normal.y = 0.0f;
    vert.normal.z = -1.0f;

    vert.color = 0xFFFFFFFF;
    vert.tangent.x = 1.0f;
    vert.tangent.y = 0.0f;
    vert.tangent.z = 0.0f;

    vert.binormal.y = 1.0f;
    vert.binormal.x = 0.0f;
    vert.binormal.z = 0.0f;

    switch (i)
    {
    case 0:
      vert.x = 0.0f; vert.y = 0.0f; vert.z = 0.0f;
      vert.u = 0.0f; vert.v = 0.0f;
      break;
    case 1:
      vert.x = 100.0f; vert.y = 0.0f; vert.z = 0.0f;
      vert.u = 1.0f; vert.v = 0.0f;
      
      break;
    case 2:
      vert.x = 0.0f; vert.y = 100.0f; vert.z = 0.0f;
      vert.u = 0.0f; vert.v = 1.0f;
      break;
    case 3:
    default:
      vert.x = 100.0f; vert.y = 100.0f; vert.z = 0.0f;
      vert.u = 1.0f; vert.v = 1.0f;
      break;
    }
    quad[i] = vert;
  }

  quadRender->AddTrianglesToBuffer(quad, 4);
  quadRender->FlushBuffer();

  quadRender->EndRender();

#190
13:20, 30 июня 2017

quadRender->FlushBuffer(); - лишний
FlushBuffer вызывается сам при смене всех стейтов, которые чувствительны к изменениям. Чем чаще меняются стейты или текстуры или шейдеры, тем чаще сброс буффера, тем херовее работает батчинг. Во всех сменах стейта стоит проверка на смену - реально ли поменялось или передаешь туда тоже самое. Если тоже самое - сброс буффера не происходит.
Остальное вообще дичь, потому что попытка добавить 4 треугольника из 4х вершин вообще дикость. Есть вариант много проще:

  quadRender->BeginRender();
  quadRender->Clear(0);  

  quadRender->SetBlendMode(qbmSrcAlpha);

  for (int i = 0; i < 8; i++) 
    quadRender->SetTexture(i, texLogo->GetTexture(i));

  quadRender->DrawRect                   <=== или любой другой метод будет рисовать квод с использованием ранее установленных текстур.

  quadRender->EndRender();

#191
13:32, 30 июня 2017

Darthman
DrawRect нету в заголовочнике.

Перед тем как что-то пробовать я посмотрел что делает AddTrianglesToBuffer:

Move(AVertexes, FVertexBuffer[FCount], ACount * SizeOf(TVertex));
Inc(FCount, ACount);

if FCount >= MaxBufferCount then
  FlushBuffer;

То есть в коде добавляется не 4 триангла а четыре вершины, ну я по крайней мере так для себя понял. Возможно надо 6 верщин скармливать а не четыре... но на трех тоже ничего не выводится.

Мне нужно именно что не квад рисовать а отдельные треугольники...

Вообще, есть подозрения что я именно текстуру не правильно выставляю

#192
14:48, 30 июня 2017

Короче я в итоге добавил самой текстуре новый метод и собрал кастомную дллку — в таком виде это стало работать:

texLogo->DrawEx2(
    Vec2f(0, 0), Vec2f(100, 0), Vec2f(0, 100), Vec2f(100, 100), //<=Координаты вершин
    Vec2f(0, 0), Vec2f(1, 0), Vec2f(0, 1), Vec2f(1, 1)); //<=Текстурные координаты

#193
15:50, 30 июня 2017

Ну эм... у всех свой путь.
Оно того стоит так извращаться? Может быть стоит добавить какие-то методы, которых нет в основную длл?

#194
20:01, 30 июня 2017

Darthman
Это мне надо чисто для интеграции с движком для системы частиц. Так что можно сказать это мой кастомный хак и не более того

Страницы: 112 13 14 15 16 Следующая »
ПроектыФорумУтилиты