Просмотр сообщений
|
Страниц: 1 2 3 [4] 5 6 ... 142
|
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К юниформов, подозреваю отделаться членами класса для хранения 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 и т.д
|
|
|
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. Индексация будет быстрее, но в нём итераторы и указатели инвалидируются при модификации а также замедлится вставка/удаление. Под капотом у него вектор.
|
|
|
|
|