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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 2 [3]
31  Qt / 2D и 3D графика / Qt4 + текстуры : Август 30, 2014, 18:09
Уже второй день бьюсь с текстурами, но ничего не выходит. В смысле не отображаются.
Делал по примерам. Ниже код.
Код:
#define GL_CLAMP_TO_EDGE 0x812F

OpenGLWidget::OpenGLWidget(QWidget *parent) :
    QGLWidget(parent)
{
    setMouseTracking(true);

    QSettings settings("settings.conf", QSettings::IniFormat);
    Scale_frequency = settings.value(VER + "GUI/Scale_frequency", 0.395734).toFloat();
    Scale_dBm = settings.value(VER + "GUI/Scale_dBm", 34.4251).toFloat();
    Translate_frequency = settings.value(VER + "GUI/Translate_frequency", -3.72921).toFloat();
    Translate_dBm = settings.value(VER + "GUI/Translate_dBm", 12.1542).toFloat();

    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(updt()));
    timer->start(40.0);
}

OpenGLWidget::~OpenGLWidget()
{
 
}

void OpenGLWidget::initializeGL()
{
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    qglClearColor(QColor(100.0, 100.0, 100.0));
    // Light values and coordinates
    glEnable(GL_DEPTH_TEST); // Hidden surface removal
    // Сглаживание точек
    glEnable(GL_POINT_SMOOTH);
    glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
   
    // Generate texture
    textureID[0] = bindTexture(QPixmap(QString("69383_1310988233_picture1.jpg")), GL_TEXTURE_2D);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
    glEnable(GL_TEXTURE_2D);
}

void OpenGLWidget::resizeGL(int nWidth, int nHeight)
{
    Client_Width = nWidth;
    Client_Height = nHeight;
    glViewport(0, 0, Client_Width, Client_Height);//set field of view
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, Client_Width, 0, Client_Height, 1, - 1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

void OpenGLWidget::paintGL()
{
    qglClearColor(QColor(100.0, 100.0, 100.0));
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, Client_Width, 0, Client_Height, 1, -1); //
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    glColor4f(1.0, 1.0, 1.0, 1.0);
    glBindTexture(GL_TEXTURE_2D, textureID[0]);
    glBegin (GL_QUADS);
        glTexCoord2f(0.0, 0.0); glVertex2f (0.0,          0.0);
        glTexCoord2f(1.0, 0.0); glVertex2f (128.0,       0.0);
        glTexCoord2f(1.0, 1.0); glVertex2f (128.0,       128.0);
        glTexCoord2f(0.0, 1.0); glVertex2f (0.0,          128.0);
    glEnd();

    swapBuffers();
}
Рисунок 69383_1310988233_picture1.jpg лежит вместе с исполняемым файлом.
32  Qt / Работа с сетью / Re: QUdpSocket не принимает пакеты : Июль 29, 2014, 13:04
Делал по примеру broadcast client/server из Qt. Все работает, если client и server находятся на одном компьютере.
Соответственно, как сделать, что бы клиент принимал пакеты, если сервер находится на другом компьютере? Ни одного примера не нашел.
На данном этапе, код выглядит так:
Сервер (ip 192.168.1.105):
Код:
udpSocket->writeDatagram(array.data(), array.size(),
                             QHostAddress::Broadcast, 45454);
Клиент ( хз какой ip):
Код:
udpSocket->bind(QHostAddress("192.168.1.105"), 45454, QUdpSocket::ShareAddress);
Чтение датаграммы:
Код:
udpSocket->readDatagram(datagram.data(), datagram.size());
Код не работает.
33  Qt / 2D и 3D графика / Re: Qt5 + OpenGL + renderText : Июнь 20, 2014, 00:31
Скомпилил пример "Overpainting Example". Там выводится текст с помощью QPainter. У меня текста не видно, а в выводе приложения тоже самое, что и выше.
Система Win8 32bit. Драйверов нет. В Qt 4.8 все прекрасно работает ...
34  Qt / 2D и 3D графика / Qt5 + OpenGL + renderText : Июнь 20, 2014, 00:11
Решил перевести приложение на Qt5. В приложении есть QGLWidget виждет c отрисовкой в OpenGL 1.2.
После небольших правок, все компилируется, но в итоге не отрисовывается текст. Текст рисую с помощью renderText.
При запущенном приложении в вывод постоянно вываливается следующее:
Код:
bool QGLShaderPrivate::create(): Could not create shader of type 2.
Warning: "" failed to compile!
getProcAddress: Unable to resolve 'glEnableVertexAttribArray'
getProcAddress: Unable to resolve 'glEnableVertexAttribArrayARB'
getProcAddress: Unable to resolve 'glUniform4fv'
getProcAddress: Unable to resolve 'glUniform4fvARB'
getProcAddress: Unable to resolve 'glUniformMatrix3fv'
getProcAddress: Unable to resolve 'glUniformMatrix3fvARB'
getProcAddress: Unable to resolve 'glUniform1fv'
getProcAddress: Unable to resolve 'glUniform1fvARB'
getProcAddress: Unable to resolve 'glActiveTexture'
getProcAddress: Unable to resolve 'glActiveTextureARB'
getProcAddress: Unable to resolve 'glUseProgram'
getProcAddress: Unable to resolve 'glUseProgramARB'
getProcAddress: Unable to resolve 'glActiveTexture'
getProcAddress: Unable to resolve 'glActiveTextureARB'
getProcAddress: Unable to resolve 'glDisableVertexAttribArray'
getProcAddress: Unable to resolve 'glDisableVertexAttribArrayARB'
getProcAddress: Unable to resolve 'glVertexAttrib4fv'
getProcAddress: Unable to resolve 'glVertexAttrib4fvARB'

Гугление не помогло. В общем кто пользуется renderText, работает ли оно вообще в  Qt5?
35  Программирование / С/C++ / Re: Взаимодействие между классами : Июнь 19, 2014, 23:59
По поводу предыдущего сообщения. Нужно использовать виртуальный класс
36  Программирование / С/C++ / Re: Взаимодействие между классами : Июнь 15, 2014, 16:24
Спасибо за ответы. И еще один маленький вопросик)) Есть классы A, B, C. Методы классов B и C объявлены одинаковыми, но в самих методах содержимое разное. Нужно в зависимости от настроек, использовать в классе А либо В, либо С. Как это организовать?
Тут сильно просятся плагины/dll библиотеки, но я бы хотел обойтись без них.
37  Программирование / С/C++ / Взаимодействие между классами : Июнь 15, 2014, 13:04
При написании более-менее сложных приложений часто сталкиваюсь с следующей ситуацией:
есть классы A, B и С. В классе "А" пишем b = new B, c = new C; Вопрос собственно в том, как взаимодействовать между классами B и C миную А? Т.е. как вызвать метод из C в B, например?
Использовать статические методы не выход.
38  Qt / Установка, сборка, отладка, тестирование / Elementary os - Qt статическая сборка : Март 31, 2014, 00:27
В общем, решил установить статическую сборку Qt. В нете достаточно много инструкций. По одной из них установил Qt. Начал шарится в папке  Qt на предмет Qt Creatora, там его нет. Других версий Qt в системе не стояло. Как я понял, нужно отдельно установить Qt Creator. Но он автоматом не подхватывает настройки. Нужно его дополнительно настраивать. Как - вот это интересный вопрос)) В куче инструкций о статической сборке Qt о этом ни слова ...
Страниц: 1 2 [3]

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