程序的窗体是正常的,就是不出图形,我只是想实现最简单的几个点,是什么有问题?
#include<QtGui>
#include "nehewidget.h"
NeHeWidget::NeHeWidget( QWidget* parent=0, const char* name=0, bool fs=0)
: QGLWidget( parent )
{
fullscreen = fs;
setGeometry( 0, 0, 640, 480 );
//setCaption( "OpenGL Framework" );//???????
if ( fullscreen )
showFullScreen();
}
NeHeWidget::~NeHeWidget()
{
}
void NeHeWidget::initializeGL()
{
glShadeModel( GL_SMOOTH );//阴影平滑
glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
glClearDepth( 1.0 );//设置深度缓存。
glEnable( GL_DEPTH_TEST );//启用深度测试。
glDepthFunc( GL_LEQUAL );//所作深度测试的类型。
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );//精细的透视修正,十分轻微的影响性能,透视图看起来好一点
}
void NeHeWidget::paintGL()
{
GLfloat sizes[2];
GLfloat curSize;
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );//清楚屏幕和深度缓存。
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
/*************************************code*************************/
glColor3f(1.0f, 0.0f, 0.0f);
glGetFloatv(GL_POINT_SIZE_RANGE,sizes);
curSize=10.0f;
glPointSize(curSize);
glBegin(GL_POINTS);
glVertex3f(50.0f,50.0f,0.0f);
glVertex3f(40.0f,50.0f,0.0f);
glVertex3f(40.0f,40.0f,0.0f);
glEnd();
glFlush();
/*************************************code*************************/
}
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 );//建立透视投影矩阵。
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
}
void NeHeWidget::keyPressEvent( QKeyEvent *e )
{
switch ( e->key() )
{
case Qt::Key_F2:
fullscreen = !fullscreen;
if ( fullscreen )
{
showFullScreen();
}
else
{
showNormal();
setGeometry( 0, 0, 640, 480 );
}
updateGL();
break;
case Qt::Key_Escape:
close();
}
}