首页| 论坛| 消息

标题:opengl编译出错
作者:butterflyer
日期:2006-12-04 20:40
内容:

我用的是Qt Opengl教程的lesson1创建一个OpenGL窗口
我的电脑装的 是redhat 自带的 qt-3.1
1.编译的 时候出现
> nehewidget.o(.text+0x30d): In function `NeHeWidget::resizeGL(int, int)':
> : undefined reference to `gluPerspective'
> collect2: ld returned 1 exit status
> 我知道是版本的问题.但是写程序的人用的是qt3.1.0啊!我也是3.1啊,差距这么大?
> gluPerspective到底是 哪里的啊?
2.我只好把gluPerspective( 45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0 );改为glFrustum( -1,1,-1,1,1,100 );,具体我也不知道什么意思,但是别人说他们基本相同.
当我编译通过了 ,程序正常运行,但是同时出现Xlib:extension "XFree86-DRI" missing on display ":0.0".
的错误!
3.更奇怪的 是 我 编译lesson4旋转,
运行时没有转啊!同时出现Xlib:extension "XFree86-DRI" missing on display ":0.0".
它不转的原因是和什么有关呢?
麻烦大家 ,告诉告诉我 ,好吗?
THANKS VERY MUCH!


#1 [butterflyer 12-04 20:42]
lesson4 部分代码(http://www.qiliang.net/nehe_qt/lesson04.html)
#include "nehewidget.h"
NeHeWidget::NeHeWidget( QWidget* parent, const char* name, bool fs )
: QGLWidget( parent, name )
{
rTri = 0.0;
rQuad = 0.0;
fullscreen = fs;
setGeometry( 0, 0, 640, 480 );
setCaption( "NeHe's Rotation Tutorial" );
if ( fullscreen )
showFullScreen();
}
NeHeWidget::~NeHeWidget()
{
}
void NeHeWidget::paintGL()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
glTranslatef( -1.5,0.0, -6.0 );
glRotatef( rTri,0.0,1,0.0 );
glBegin( GL_TRIANGLES );
glColor3f( 1.0, 0.0, 0.0 );
glVertex3f(0.0,1.0,0.0 );
glColor3f( 0.0, 1.0, 0.0 );
glVertex3f( -1.0, -1.0,0.0 );
glColor3f( 0.0, 0.0, 1.0 );
glVertex3f(1.0, -1.0,0.0 );
glEnd();
glLoadIdentity();
glTranslatef(1.5,0.0, -6.0 );
glRotatef( rQuad,1,0.0,0.0 );
glColor3f( 0.5, 0.5, 1.0 );
glBegin( GL_QUADS );
glVertex3f( -1.0,1.0,0.0 );
glVertex3f(1.0,1.0,0.0 );
glVertex3f(1.0, -1.0,0.0 );
glVertex3f( -1.0, -1.0,0.0 );
glEnd();
rTri += 0.2;
rQuad -= 0.15;
}
void NeHeWidget::initializeGL()
{
glShadeModel( GL_SMOOTH );
glClearColor( 0.0, 0.0, 0.0, 0.5 );
glClearDepth( 1.0 );
glEnable( GL_DEPTH_TEST );
glDepthFunc( GL_LEQUAL );
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
}
void NeHeWidget::resizeGL( int width, int height )
{
if ( height == 0 )
{
height = 1;
}
glViewport( 0, 0, (GLint)width, (GLint)height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
//gluPerspective( 45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0 );
glFrustum( -1,1,-1,1,1,100 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
}
void NeHeWidget::keyPressEvent( QKeyEvent *e )
{
switch ( e->key() )
{
case Qt::Key_F2:
fullscreen = !fullscreen;
i ..
#2 [cavendish 12-04 21:33]
检查一下你的机器里有没有glu库

回复 发表
主题 版块