Russian Qt Forum
Апрель 28, 2024, 07:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 2 3 [4] 5 6 ... 142
46  Программирование / Алгоритмы / Re: Выбрать кадры : Январь 14, 2021, 08:27
Код
C++ (Qt)
int len = stop - start;
int result = (len * val) / count;
result *= count;
 
47  Программирование / Общий / Re: STL-compatible контейнеры с семантикой Qt's Implicit Sharing : Октябрь 24, 2020, 11:17
Не понял, зачем такой переход. В QVector, вроде, и так всё выровнено
48  Qt / Печать / Re: LimeReport - Open-source Qt генератор отчетов, релиз новой версии 1.5 : Октябрь 23, 2020, 20:07
Молодцы, спасибо!

Документацию нашёл в папке docs https://github.com/fralx/LimeReport/blob/master/docs/UserManualRu.pdf
49  Qt / Базы данных / Re: QSqlRelationalTableModel и SELECT : Июль 22, 2020, 07:36
QSqlRelationalTableModel для отображения всей таблицы из базы. Для отображения запроса QSqlQueryModel.
Можно, конечно, дальше сопротивляться и прикручивать костыли к таблице и страдать от выкачивания BLOB Улыбающийся
50  Qt / Общие вопросы / Re: Выжать скорость : Июль 20, 2020, 18:33
Код:
Ключ - строка уже проверялось, время теряется на копирование
Копирования на этапе поиска я побарывал так:
Код:
std::map<string, string, less<>>
За счёт этого можно пользоваться шаблонным find и копирования не будет
51  Qt / Общие вопросы / Re: Выжать скорость : Июль 18, 2020, 13:26
Да, я понял, что много юниформов. Соответственно и locations будет много + возможно много избыточных

Цитировать
шейдере light объявлен как

Я бы в таком случае использовал

Код:
Locations {
    vector<LightLocations> light

Цитировать
Неясно как Вы собираетесь заряжать данные для массива light'ов
Не работал с массивами, кроме как QVector3D, QMatrix4x4 и подобными - не знаю как выглядит эта зарядка. Я так понял по аналогии с этой
Цитировать
SetUniformFloat(shader, "light[1].amout", 0.5f);

Вместо "light[1].amout" брать locations.light[1].amount
52  Qt / Общие вопросы / Re: Выжать скорость : Июль 17, 2020, 20:10
я бы отказался от SetUniform в пользу методов setDiffuse(float) и setAmountOfLight(size_t index, float), setAmountOfLight(float)

locations при линковке шейдера сохранить в структуру
Код:
Locations {
  int diffuse = -1;
  vector<int>light;
}
53  Qt / Общие вопросы / Re: Выжать скорость : Июль 15, 2020, 18:13
glPolygonOffset, кстати у меня прям норм прижился. Немного повозился с подбором параметров на разных картах и больше не возвращался к нему.
54  Qt / Общие вопросы / Re: Выжать скорость : Июль 15, 2020, 18:11
Код:
но есть и по 1-2К строк
Но не по 1К юниформов, подозреваю

Код:
отделаться членами класса для хранения location не удается
Не понимаю, почему в const char * name удаётся отделаться строками. Вектор не мог бы хранить несколько location для этих структур?

Как вариант завести структуру со всевозможными location и вместо const char * name использовать её поля. Уродливо, но зато быстро
55  Qt / Общие вопросы / Re: Выжать скорость : Июль 14, 2020, 18:38
есть у меня ощущение, что в QOpenGLShaderProgram, glGetUniformLocation используется примерно та же мапа для поиска location по имени. Ещё думаю, не стоит исключать то, что может быть происходит обращение с видеокартой, на что тоже тратится время

Если исходник шейдера не изменяется перед его компиляцией, то по идее можно было бы попробовать после линковки извлечь все location и запихать в отдельную структуру. В функции
изменить аргумент name на location.

Я пробовал объединять QOpenGLShaderProgram с её location в одном классе, у которого были методы setModelViewMatrix, setColor и т.д
56  Qt / Общие вопросы / Re: Сравнение с QVariant : Июль 12, 2020, 10:45
Очень похоже, что Qt сам регистрирует QMatrix3x3

Нужно только сравнивать v.userType() с qMetaTypeId<QMatrix3x3>()
57  Qt / Общие вопросы / Re: Сравнение с QVariant : Июль 11, 2020, 11:37
Код
C++ (Qt)
template<class T>
bool SameValue( const QVariant & v, const T & value )
{
 return (v.type() == qMetaTypeId<T>()) && (v.value<T>() == value);
}
 
Так работает?
58  Программирование / Общий / Re: Интрузивный список : Июнь 30, 2020, 11:10
Цитировать
как обеспечить ф-ционал take
Через std::set::extract обеспечивается. Делает возможным хранение объектов, а не указателей

Ну, раз нельзя упорядочивать, то видно решение от ssoft будет наиболее разумным.

Цитировать
поля next и prev просто public
Придётся исправлять, либо больше закапываться в местах обращения
59  Программирование / Общий / Re: Интрузивный список : Июнь 30, 2020, 01:12
Если node владеет curve, то можно ещё попробовать std::set<Curve>. Понадобится написать transparent компоратор, который будет их укладывать и искать по curveID или обойтись std::less<> в качестве компоратора и operator< для Curve, int и для Curve, Curve

ещё можно попробовать flat_set. Индексация будет быстрее, но в нём итераторы и указатели инвалидируются при модификации а также замедлится вставка/удаление. Под капотом у него вектор.
60  Qt / Вопросы новичков / Re: Помощь для новичков : Май 12, 2020, 08:00
Ссылка протухла
Страниц: 1 2 3 [4] 5 6 ... 142

Страница сгенерирована за 0.093 секунд. Запросов: 23.