Войти
ФлеймФорумПрограммирование

Общие вопросы по программированию (408 стр)

Страницы: 1407 408 409 410440 Следующая »
#6105
20:42, 19 мая 2022

nes
> Так я и не балуюсь, компилятор сам все упаковывает и при этом предупреждает,
> что впиндюрил выравнивание.
А ты уверен, что какой-то из инклудов прагму не вставил?

#6106
21:09, 19 мая 2022

samrrr
Уверен.

#6107
21:17, 19 мая 2022

nes
> Уверен.
Тогда заглушай ворн есл тебя это устраивает. Как это сделать гуглится легко.

#6108
21:30, 19 мая 2022

samrrr
Я же писал, что знаю как это делать и хотел бы обойтись без этого.

#6109
(Правка: 21:42) 21:42, 19 мая 2022

nes
> Я же писал, что знаю как это делать и хотел бы обойтись без этого.
Цифру в алигне поменяй, и поля сортани по размеру. char buff_unused[x] в конец допиши.

что-то из этого точно должно помочь.

#6110
22:46, 19 мая 2022

Алексей Патрашов
> Я её в первый раз пытался через вложенные if then решать

Честно говоря даже непонятно как if-then тут помогает. Даже если специально подумать, ничего в голову не приходит.

Первая мысль - раз нужна история из пяти кликов, значит нужно иметь массив для истории кликов.
Вторая мысль  - что в массиве хранить? Очевидно те данные которые как то эти клики различают.
Фишка от Aslan: хранить в поле сразу указатель на функцию на нужную сортировку
Третья мысль: организовать ротацию данных массива через shift - push на каждом клике
И четвертая: как данные из массива извлекать. Можно for нагородить, а проще forEach

#6111
5:58, 20 мая 2022

nes
> Это крайний случай.
Я отключил глобально это предупреждение. А так, ну вот тебе вариант:

#if defined(_MSC_VER)
#  define BEGIN_NWARN(n) __pragma(warning(disable:n))
#endif
#if defined(_MSC_VER)
#  define END_NWARN(n) __pragma(warning(default:n))
#endif

BEGIN_NWARN(4514)
typedef struct
{
  char blabla;
} some_struct_t;
END_NWARN(4514)

или

#if defined(_MSC_VER)
#  define BEGIN_NWARN(n) __pragma(warning(push)) __pragma(warning(disable:n))
#endif
#if defined(_MSC_VER)
#  define END_NWARN __pragma(warning(pop))
#endif

BEGIN_NWARN(4514)
typedef struct
{
  char blabla;
} some_struct_t;
END_NWARN
#6112
(Правка: 6:50) 6:50, 20 мая 2022

war_zes
> __pragma
https://habr.com/ru/company/abbyy/blog/136909/
Прочитай. Ты заглушил ворн неправильно в 1 случае.

#6113
(Правка: 22:48) 22:22, 21 мая 2022

Вобщем пришлось перелопатить весь класс TFastImage, сначала по методу предложенному Ведьмочкой, потом своим. Пришлось знатно повозится с методами класса, в итоге начались краши, которые уже просто не было ни сил ни желания отлавливать). Да и выглядело оно как-то с самого начало не совсем естетично. Приписывать к каждому методу(а их достаточно много в самом классе) аргумент в скобках то еще извращение). По второму методу получилась вот такая штука:

  PFastImageItem    =^TFastImageItem;
  PFastImageProc    =^TFastImageProc;

  TFastImageData    =record 

    // Some Variables;

  end; {$endregion}
  PFastImageData    =^TFastImageData;

  TFastImageItem    =class 
    fast_image_data: TFastImageData;
    constructor Create  (...);   
    destructor  Destroy; override; 
  end; {$endregion}

  TFastImageProc    =class 

    fast_image_data_ptr: PFastImageData;

    {Proc. Tables} 
    // ...

    // Init. Part and Other Routines

  end;

  fast_image_proc_var : TFastImageProc;
    

И что самое главное, производительность в плане скорости вроде как не изменилась, но памяти теперь выделяется  меньше. Еще пришлось правда всюду, где только можно, понаставлять операторов with, использование которого осуждается в некоторых языках программирования(JavaScript, например). И чтобы я без него делал). Всем спасибо за подсказки!

#6114
(Правка: 23:20) 23:19, 21 мая 2022

ArtProg
> но памяти теперь выделяется  меньше
о! ради интереса прогони её с heaptrc

ArtProg
> Да и выглядело оно как-то с самого начало не совсем естетично
а как теперь "картинка" передаётся на "обработку"?
всё ещё через глобальную переменную?

#6115
(Правка: 9:18) 9:13, 22 мая 2022

  Хм, странно, на версии Лазаруса 2.2.0 (2022-03-29), что-то не компилируется, если врубить проверку heaptrc. Оно помню(на старых версиях лазаруса) выдавало кучу непонятной инфы даже на пустом проекте.
  Касательно обработки, то да, пока что на глобальных, я о многопоточке мало задумывался, так как вроде скорость прорисовки на данный момент более чем приемлема, но на будущее приму к сведению.
  Я так понимаю, нужно будет на каждый поток по экземпляру

fast_image_proc_var

(принадлежит классу, в котором собран весь функционал, без данных) создать? Я думаю по этой теме у меня еще будет немало вопросов потом, так как с многопоточкой почти не работал. Есть конечно парочка идей на этот счет. Так, например, можно, как уже было написано выше, разделить спрайт на несколько фрагментов(число их кратно количеству потоков). Тут  могут всплыть некоторые проблемы с производительностью из-за батчинга, а точнее его отсуствия в случае с таким подходом. Но благо, формат CSR(compressed sparse row) позволяет почти бесплатно клипать(clip) целые атласы спрайтов(есть один ньюанс: спрайты в атласе должны располагатся друг над другом в вертикальной "ленте", если так можно выразится).

#6116
(Правка: 7:03) 7:01, 23 мая 2022

Чет, немножко туплю в математике.

Интегрирую physX... Как из кватерниона:

\brief class representing a rigid euclidean transform as a quaternion and a vector
class PxTransform
{
  public:
  PxQuat q; // вращение
  PxVec3 p; // позиция
}

либо из 4х4 мировой матрицы

получить градусы вращения?


(просто наговнокодил и не могу напрямую взять эту матрицу из physx, поэтому пытаюсь извлечь числа. С позицией понятно, а с вращением что-то тупня)

#6117
7:14, 23 мая 2022

Сделал

glm::vec3 angles = glm::eulerAngles(glm::quat(pT.q.w, pT.q.x, pT.q.y, pT.q.z));

но результат неправильный

#6118
8:22, 23 мая 2022

war_zes
> physX
Фу фу фу.

#6119
8:31, 23 мая 2022

war_zes
> получить градусы вращения?
примерно так: https://twitter.com/id_aa_carmack/status/187964611159539712

Страницы: 1407 408 409 410440 Следующая »
ФлеймФорумПрограммирование