Я пытаюсь написать код для комплектации в моем настольном приложении на C ++ в Qt creator.
Я полностью новичок в Qt и C ++ (извиняюсь за свое невежество), я прочитал много примеров, и все они используют Glut, Glu и \ или glew.
Я следую этому коду:
https://github.com/tatsy/QtOpenGLMousePick
и я попытался включить библиотеку, но я не уверен во всех шагах, которые необходимо сделать. Может кто-нибудь объяснить их, пожалуйста?
После многих попыток включить библиотеку glut и glew мой код по-прежнему выдает ошибки:
C: ... \glwidget.cpp:266: error: undefined reference to `gluPickMatrix@36'
C: ... \glwidget.cpp:268: error: undefined reference to `gluPerspective@32'
Я использую: Qt Creator 4.4.1 на основе Qt 5.9.2 (MSVC 2015, 32-разрядная версия)
Мой код:
void GLWidget::mousePressEvent(QMouseEvent* ev) {
// Selection buffer
std::fill(selectBuffer.begin(), selectBuffer.end(), 0);
//-(selectBufferSize, &selectBuffer[0]);
// Draw for selection buffer
glRenderMode(GL_SELECT);
// Matrix setting
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
int viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
gluPickMatrix(50, 50, 5, 5, viewport);
const float aspect = static_cast<float>(viewport[2]) / viewport[3];
gluPerspective(45.0, aspect, 1.0, 1000.0);
// Draw
paintGL();
// Reset matrix setting
glMatrixMode(GL_PROJECTION);
glPopMatrix();
// Revert render mode
int hits = glRenderMode(GL_RENDER);
// Show selection
printf("%d hits\n", hits);
if (hits > 0) {
int id = 0;
for (int i = 0; i < hits; i++) {
printf("Level: %u\n", selectBuffer[id + 0]);
printf(" Min: %f\n", (double)selectBuffer[id + 1] / UINT_MAX);
printf(" Max: %f\n", (double)selectBuffer[id + 2] / UINT_MAX);
printf(" ID: %u\n", selectBuffer[id + 3]);
id += 4;
}
}
}
Конечно я в том числе:
#include <gl/GLU.h>
#include <gl/glut.h>
и в моем .pro:
LIBS += -lOpengl32
LIBS += -LD:\Qt\5.9.2\mingw53_32\lib\libQt5OpenGL.a -lopengl32
LIBS += -lglut
LIBS += -LC:\MinGW\lib\libglut.a -lglut
win32:CONFIG(release, debug|release):
LIBS += -L$$PWD/../../../../../Downloads/glutcu/lib/ -lglut32cu
else:win32:CONFIG(debug, debug|release):
LIBS += -L$$PWD/../../../../../Downloads/glutcu/lib/ -lglut32cu
else:unix: LIBS += -L$$PWD/../../../../../Downloads/glutcu/lib/ -lglut32cu
INCLUDEPATH += $$PWD/../../../../../Downloads/glutcu/include
DEPENDPATH += $$PWD/../../../../../Downloads/glutcu/include
DISTFILES += \
freeglut.dll \
glew32.dll
Задача ещё не решена.
Других решений пока нет …