QGLwidget 小例子

#include <QGLWidget>

class QGLWidgetTest : public QGLWidget
{
	Q_OBJECT

public:
	QGLWidgetTest(QWidget *parent = 0);
	~QGLWidgetTest();

protected:
	//重写的三个虚函数  
	void initializeGL();
	void resizeGL(int w, int h);
	void paintGL();
};
#include "qglwidgettest.h"

#include <gl/GLU.h>

QGLWidgetTest::QGLWidgetTest(QWidget *parent) :QGLWidget(parent)
{

}

QGLWidgetTest::~QGLWidgetTest()
{

}

void QGLWidgetTest::initializeGL()
{
	//设置widget的坐标和尺寸  
	setGeometry(300, 150, 500, 500);
	//设置清除时颜色  
	glClearColor(0.0, 0.0, 0.0, 0);
}

void QGLWidgetTest::resizeGL(int w, int h)
{
	//视口变换  
	glViewport(0, 0, (GLsizei)w, (GLsizei)h);
	//投影变换  
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(40.0, (GLdouble)w / (GLdouble)h, 0.1, 10000.0);
	//视图变换  
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	gluLookAt(0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}

void QGLWidgetTest::paintGL()
{
	//清屏  
	glClear(GL_COLOR_BUFFER_BIT);

	// 设置正面为填充模式
	glPolygonMode(GL_FRONT, GL_FILL);
	// 设置反面为线形模式
	glPolygonMode(GL_BACK, GL_LINE);
	// 设置两面均为顶点绘制方式
	glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); 

	//如果以顺时针绘制则是反面,逆时针绘制则是正面

	// 设置CCW方向为“正面”,CCW即CounterClockWise,逆时针 
	glFrontFace(GL_CCW);  
	// 设置CW方向为“正面”,CW即ClockWise,顺时针
	glFrontFace(GL_CW);   

	// 设置逆时针绘制一个正方形
	glBegin(GL_POLYGON);
	glVertex2f(-0.5f, -0.5f);
	glVertex2f(0.0f, -0.5f);
	glVertex2f(0.0f, 0.0f);
	glVertex2f(-0.5f, 0.0f);
	glEnd();
	// 设置顺时针绘制一个正方形
	glBegin(GL_POLYGON);
	glVertex2f(0.0f, 0.0f);
	glVertex2f(0.0f, 0.5f);
	glVertex2f(0.5f, 0.5f);
	glVertex2f(0.5f, 0.0f);
	glEnd();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值