Qt+OpenGL. Qt "не видит" функции OpenGL, C3861: 'glOrtho': identifier not found |
Здравствуйте, гость ( Вход | Регистрация )
Qt+OpenGL. Qt "не видит" функции OpenGL, C3861: 'glOrtho': identifier not found |
Christor |
28.1.2013, 22:02
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 28.1.2013 Пользователь №: 3689 Спасибо сказали: 0 раз(а) Репутация: 0 |
Доброго времени суток.
Срочно нужна помощь. Скопировал код со статьи http://www.gamedev.ru/code/articles/OpenGL_Qt4 (своего не добавлял). В итоге вот такие ошибки: т.е. Стандартные функции gl не видны. Практически все функции с префиксом gl не работают. Как будто не подключён gl.h (он же вроде должен быть в модуле Qt). Пробовал другие исходники с OpenGL. Результат тот же. В чём может быть ошибка? Очень срочну нужно решить проблему. Qt 5.0 (статья для Qt 4. Может быть с этим связано?) Очень надеюсь на помощь. |
|
|
lanz |
29.1.2013, 8:46
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
.pro файл такой же как в оригинальной стаье? (lecture1.pro)
|
|
|
Christor |
29.1.2013, 10:37
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 28.1.2013 Пользователь №: 3689 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да.
Вот My.pro:
Я не могу понять, почему glEnable(GL_DEPTH_TEST); работает, а glShadeModel(GL_FLAT); не работает. Как будто glShadeModel(GL_FLAT); просто нигде не прописана. Константу GL_FLAT тоже не видит. Как будто она не определена. И многие другие функции. За то glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, (GLint)nWidth, (GLint)nHeight); видны и компилятор на них не ругается. |
|
|
lanz |
29.1.2013, 13:00
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Что за система? Виртуалка/эмулятор?
Похоже на OpenGL ES. В ней не будут работать эти команды, ищи пример для GL ES. |
|
|
Christor |
29.1.2013, 13:16
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 28.1.2013 Пользователь №: 3689 Спасибо сказали: 0 раз(а) Репутация: 0 |
Windows 7. Не виртуалка и не эмулятор.
Сейчас попробую переустановить Qt. Но думаю не поможет. OpenGL ES ? Я ничего подобного не ставил. Разве с Qt не идут все необходимые OpenGL файлы? Где должен находиться gl.h ? |
|
|
lanz |
29.1.2013, 16:16
Сообщение
#6
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Возможно проблемы с драйвером видеокарты.
В Qt4 все работает, проверял сегодня и в Creator и в MSVS2010, Win7x64. Возможно дело действительно в Qt5, надо будет поиграться. |
|
|
lanz |
29.1.2013, 16:54
Сообщение
#7
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Поставил Qt5. Подтверждаю, у меня тоже не видит .)
Смотреть почему - http://qt-project.org/forums/viewthread/22821 (от 20 декабря) Цитата OK that is the source of your issues then. The pre-compiled Windows desktop version of Qt5 is built against ANGLE which only provides OpenGL ES 2 support by implementing it on top of DirectX 9. This was done to ensure that QtQuick2 works on all windows systems, including those with crappy Intel OpenGL drivers OpenGL ES 2 does not support the legacy fixed function pipeline, only a shader-based one. There is a bug open to provide a build of Qt 5 using the native desktop OpenGL implementation for Qt 5.0.1. Please go vote for https://bugreports.qt-project.org/browse/QTBUG-28715 to see this happen. For now, you have two choices: Live with OpenGL ES 2 support and don’t use legacy OpenGL Build your own copy of Qt 5 to use the native OpenGL drivers by passing in -opengl desktop to configure. With the 2nd option you should have access to OpenGL from 1.0 up to 4.3 (if your card/driver support it). Суть вкратце: 1. Устанавливаемая собранная версия Qt собрана с использованием OpenGL ES, чтобы QtQuick 2 мог работать на всех системах с Windows. 2. Как я уже говорил OpenGL ES не поддерживает многих старых функций fixed pipeline, только шейдеры, только хардкор .) 3. Можно проголосовать за десктопную сборку для 5.0.1 по ссылке https://bugreports.qt-project.org/browse/QTBUG-28715 , но пока ее нет. 4. Собственно есть два пути Отказаться от старых функций и использовать только шейдеры. Или собрать Qt с использованием нативного OpenGL (используя опцию -opengl desktop) |
|
|
Christor |
29.1.2013, 17:33
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 28.1.2013 Пользователь №: 3689 Спасибо сказали: 0 раз(а) Репутация: 0 |
Установил Qt libraries 4.8.4 for Windows (VS 2010, 234 MB) и QtCreator к нему.
Всё отлично заработало. Я с Qt Познакомился около недели назад(это я к тому, что с ним никогда не работал). Естественно сразу скачал последнюю версию. С OpenGL тоже на Вы. Когда-то давно баловался используя glut. Делал всякие 3D пирамидки, сферы. Сейчас нужно написать не сложную 2D игру. Или собрать Qt с использованием нативного OpenGL (используя опцию -opengl desktop) Под "собрать" я понимаю собрать из исходников. Верно? Имеет ли смысл делать данную процедуру или лучше тихо и мирно оставаться на 4.8.4 ? lanz, спасибо! |
|
|
lanz |
30.1.2013, 9:29
Сообщение
#9
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Рад помочь .)
Под "собрать" я понимаю собрать из исходников. Верно? Да, все верно. Это не так страшно как кажется .) Цитата Имеет ли смысл делать данную процедуру или лучше тихо и мирно оставаться на 4.8.4 ? Тут есть несколько моментов. Если есть желание освоить OpenGL то как мне кажется лучше начинать с fixed pipeline и immediate mode(glBegin/glEnd) - OpenGL 2, потом переходить на шейдеры/буферы (OpenGL 3-4(core profile)/ES). Если уже есть представление как работают GL/DirectX то можно сразу начинать с GL4 версии. Однако на это все время уйдет, поэтому если нужно быстро написать то лучше взять готовый движок(например http://hge.relishgames.com/), так получится быстрее и лучше. Кармака в твиттере спросили как то - что бы мне изучить, чтобы сделать игру? Он ответил: Если хотите действительно сделать игру, найдите как можно больше готового кода (библиотеки, движок и т.п.) Это в качестве оффтопа, а так изучать конечно лучше последнюю версию. |
|
|
Текстовая версия | Сейчас: 19.4.2024, 6:05 |