我用Qt写OpenGL窗口,基类QGLWidget,我冲定义了如下函数:
void ImageView::initializeGL()
{
glShadeModel( GL_SMOOTH );
glClearColor( 0.0,0.0, 0.0,1.0 );
glClearDepth( 1.0 );
glEnable( GL_DEPTH_TEST );
glDepthFunc( GL_LEQUAL );
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void ImageView::resizeGL(int w, int h)
{
if ( height == 0 )
{
height = 1;
}
//防止height为0。
glViewport( 0, 0, (GLint)width, (GLint)height );
//重置当前的视口(Viewport)。
glMatrixMode( GL_PROJECTION );
//选择投影矩阵。
glLoadIdentity();
//重置投影矩阵。
gluPerspective( 45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0 );
//建立透视投影矩阵。
glMatrixMode( GL_MODELVIEW );
//选择模型观察矩阵。
glLoadIdentity();
//重置模型观察矩阵。
}
/////////////////////////////////////////////////////////////////////////
void ImageView::paintGL()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
//清楚屏幕和深度缓存。
glLoadIdentity();
//添加绘制代码....
//绘制四边形
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();
//glFlush();
}
main.cpp如下:
#include "mywidget.h"
int main( int argc, char **argv )
{
bool fs = false;
QApplication a(argc,argv);
myWidget w( 0, 0, fs );
a.setMainWidget( &w );
w.show();
return a.exec();
}
但窗口中并未显示四边形,为什么????????