Примеры Qt OpenGL жалуются на некоторые ошибки и не запускаются - PullRequest
1 голос
/ 09 февраля 2012

Я пытаюсь запустить примеры OpenGL в Ubuntu 10.04.Я смело скомпилировал код Qt следующим образом, и все прошло отлично.

./configure -prefix /home/user/Software/qt-4.7.4-openGL-without-opengl-graphics -xplatform linux-g++-32  -little-endian -opensource -debug-and-release -fast -exceptions -accessibility -stl -no-qt3support -xmlpatterns -multimedia -audio-backend  -svg -webkit-debug -script -scripttools -declarative -qt-zlib -qt-libpng -qt-libjpeg -qt-libmng -qt-libtiff  -make translations -make tools -make libs -opengl desktop -lglut

Но потом из-за успешной компиляции я испытал удовлетворение, пытаясь запустить примеры, а некоторые не запустились.Для начала пример 2dpainting завершается после печати следующего.

hijackWindow() context created for Window(0xbf8b0f2c) 1 
QGLPixelBuffer: Unable to find a context/format match - giving up.
QGLWindowSurface: Failed to create valid pixelbuffer, falling back 
QGLWindowSurface: Using plain widget as window surface QGLWindowSurface(0x8bf4990) 
hijackWindow() context created for Widget(0x8be5ab0) 2 
Vertex shader for simpleShaderProg (MainVertexShader & PositionOnlyVertexShader)  failed to compile
Fragment shader for simpleShaderProg (MainFragmentShader & ShockingPinkSrcFragmentShader) failed to compile
QGLShaderProgram: shader programs are not supported 
The program has unexpectedly finished.

И пример box даже не компилируется, выдавая следующую ошибку.

qtbox.cpp: In member function 'virtual void QtBox::paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*)':
qtbox.cpp:327: error: 'gluPerspective' was not declared in this scope

Может кто-нибудь сказать мнеЯ тут не так делаю?

Ответы [ 2 ]

1 голос
/ 13 января 2013

Вы не связались с -lGL

LIBS + = -lGLU

и включили файл glu.h в свой код.

включает "GL / glu.h"

1 голос
/ 20 февраля 2012

GluPerspective является частью библиотеки GLU и не поддерживается в более новых (3.x?) Версиях OpenGL. Простой способ обновить пример - написать свою собственную замену, примерно так:

#include <QtOpenGL>

void gluPerspective(double fovy,double aspect, double zNear, double zFar)
{
 // Start in projection mode.
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 double xmin, xmax, ymin, ymax;
 ymax = zNear * tan(fovy * M_PI / 360.0);
 ymin = -ymax;
 xmin = ymin * aspect;
 xmax = ymax * aspect;
 glFrustum(xmin, xmax, ymin, ymax, zNear, zFar);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...