• 7709阅读
  • 5回复

qt+opengl 不出图形 [复制链接]

上一主题 下一主题
离线chengyake
 
只看楼主 倒序阅读 楼主  发表于: 2009-11-20
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
程序的窗体是正常的,就是不出图形,我只是想实现最简单的几个点,是什么有问题?

#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();
}
}
离线lanyuer
只看该作者 1楼 发表于: 2009-11-21
你先画个正方形什么的试试
霜寒晓秋踏长径
芳谢初晨落嗟声
离线duduqq

只看该作者 2楼 发表于: 2009-11-21
编译QT时有没有把OPENGL模块编译进去啊
离线chengyake
只看该作者 3楼 发表于: 2009-11-21
编译模块我确实加进去了,我也试着改变点的大小,还是不行
离线chengyake
只看该作者 4楼 发表于: 2009-11-21
QT+=opengl 加入到.pro 中,我试过了
离线lophyxp

只看该作者 5楼 发表于: 2009-12-07
引用第1楼lanyuer于2009-11-21 10:08发表的  :
你先画个正方形什么的试试

是啊,你最好先画一个填充的矩形试试。不然,谁知道什么原因。

如果填充矩形画出来了,再把
curSize=10.0f;
这一句改成
curSize=sizes[1];
试试。
快速回复
限100 字节
 
上一个 下一个