Просмотр сообщений
|
Страниц: 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?
|
|
|
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 о этом ни слова ...
|
|
|
|
|