Ответы пользователя по тегу Qt
  • Как ускорить вывод видео в QML?

    Насколько я понял вы вручную занимаетесь декодированием и выводом, а вы пробовали использовать встроеный проигрыватель?
    MediaPlayer {
    id: videoPlayer
    source:: "rtsp://admin:admin@192.168.0.10/cam/realmonitor?channel=1&subtype=0"
    muted: true
    autoPlay: true
    }
    Ответ написан
  • Разработка игр на Qt - QOpenGL или QGraphicsScene? Или есть еще варианты?

    Конечно все зависит от логики вашей игры и тяжести ваших ресурсов. Если тут все просто, то отрендерить 25 фигур не составив труда. Возможно у вас проблема в самой логике рендера, где-то делаеться много лишних телодвижений. Сказать более точно сложно... С производетельностью pipeline Qt проблем не должно быть. Возможно Я конечно ошибаюсь, но на моей практике все летало шустро.
    Ответ написан
    1 комментарий
  • QT OpenGL как отрисовать линию массивом?

    Копипаст это плохо(если не знаешь, что копипастиш)!
    -glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
    +glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);

    Вы рисуете линии, следовательно, нужно только 2значения из буфера, а не 4. Подозреваю, что в примере рисовали квадраты:)

    З.Ы. Тестировал в OpenTK, все заработало.

    UPD. Извиняюсь за задержку как-то долго я не заходил в linux. Возможно я опоздал, но все равно код будет полезет тем кто прийдет сюда из гугла. Тестировал я ваш код таким образом:
    #include "widget.h"
    
    Widget::Widget(QWidget *parent)
        : QOpenGLWidget(parent)
    {
    }
    GLuint VBO;
    GLfloat arr[4];
    
    void Widget::initializeGL()
    {
        glewExperimental = true;
        glewInit();
        glClearColor(0,0,0,1);
        glColor3f(1,1,1);
    
        arr[0] = -1;
        arr[1] = -1;
        arr[2] = 1;
        arr[3] = 1;
    
        glGenBuffers( 1, &VBO);
        glBindBuffer(GL_ARRAY_BUFFER, VBO);
        glBufferData(GL_ARRAY_BUFFER, sizeof(arr), arr, GL_STATIC_DRAW);
        glEnableVertexAttribArray(0);
    }
    
    void Widget::paintGL()
    {
        glClear(GL_COLOR_BUFFER_BIT);
        glLoadIdentity();
    
        glColor4f(1.0f, 0.0, 0.0, 1.0);
        glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
    
        glDrawArrays(GL_LINES, 0, sizeof(arr));
    }
    
    void Widget::resizeGL(int w, int h)
    {
        glViewport(0,0,w,h);
    }
    Ответ написан
    4 комментария
  • Микширование картинок в Qt: стоит ли использовать OpenGL?

    Выигрыш в производительности будет, это точно.
    Как вариант можно сделать так:
    1. Делаем простую квадратную плоскость(размер не главное, нужно просто правильно выставить камеру).
    2. Делаем шейдер который будет нам смешивать наши изображения(по моим предположениям он будет ну очень простой:))
    3. Рисуем нашу плоскость при помощи шейдера.
    4. Готово.

    Насколько я могу судить из вопроса, то с OpenGL вы работали мало. Для вас это может показаться очень сложным, но я советую попробовать, такой опыт дорого стоит...

    UPD. Вспомнил про QML там это дело со одной стороны немного упроститься(OpenGL + шейдер), а с другой усложниться, если вы не использовали QML раньше.
    Ответ написан
    Комментировать
  • Есть ли в QT сигнал начала работы приложения?

    Такого сигнала я не видел(он ненужен имхо). Просто напишите нужную вам логику в конструкторе формы или сделайте как предложил @zoonman.
    Ответ написан
    Комментировать
  • Как осуществить connect в отдельном классе?

    Необходимо унаследовать свой класс от нужного Qt класса и добавить макрос Q_OBJECT.
    class Round : public QDialog //или другой Qt класс
    {
         Q_OBJECT
    //...

    Тогда можно будет использовать signal и slot.
    Ответ написан