Qt4.3.4下面创建一个OpenGL 窗口

直接上代码:

NeHeWidget.h


#include <QtOpenGL/qgl.h>

class NeHeWidget:public QGLWidget
{
Q_OBJECT

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

protected:
void initializeGL();
void paintGL();
void resizeGL(int width,int height);

};

NeHeWidget.cpp


#include "NeHeWidget.h"

NeHeWidget::NeHeWidget( QWidget* parent )
:QGLWidget( parent )
{
setGeometry( 50,50,640,480 );
setWindowTitle( "OpenGL Framework" );//setCaption( "OpenGL Framework" );
}

NeHeWidget::~NeHeWidget()
{}

void NeHeWidget::initializeGL()
{
glShadeModel( GL_SMOOTH ); //启用阴影平滑
glClearColor( 0.0,0.0,0.0,0.0 ); //设置清除屏幕所使用的颜色
glClearDepth( 1.0 ); //设置深度缓存
glEnable( GL_DEPTH_TEST ); //启用深度测试
glDepthFunc( GL_LEQUAL ); //所作深度测试的类型
glHint( GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST );
//进行最好的透视修正
}

//任何你想在屏幕上显示的东东都将在此段代码中出现。
//此函数包括了所有的绘图代码。

//如果你了解OpenGL,可以在glLoadIdentity()调用之后,函数返回之前
//,试着添加一些OpenGL代码来创建基本的图形

void NeHeWidget::paintGL()
{
//将屏幕清除城我们前面所决定的颜色,清除深度缓存并重置场景
glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
//清除屏幕和深度缓存
glLoadIdentity();
//重置当前的模型观察矩阵

}

void NeHeWidget::resizeGL( int width,int height )
{
if( height==0 )
{
height=1; //防止height=0;
}

glViewport( 0,0,(GLint)width,(GLint)height ); //重置当前视口(Viewport)
glMatrixMode( GL_PROJECTION ); //选择投影矩阵
glLoadIdentity(); //重置投影矩阵

//glPerspective( 45.0,(GLfloat)width/(GLfloat)height,0.1,100.0 ); //建立透视投影矩阵
gluPerspective( 45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0 );

//glMatrixModel( GL_MODELVIEW ); //选择模型观察矩阵
glMatrixMode( GL_MODELVIEW );
glLoadIdentity(); //重置模型观察矩阵

}

main.cpp


#include <QApplication>
#include "NeHeWidget.h"

int main( int argc,int argv[] )
{
bool fs=true;
QApplication app( argc,(char**)&argv[0] );
NeHeWidget w(0);
//app.setMainWidget(&w); //Qt 3.x支持setMainWidget,但是Qt4已经取消了对setMainWidget的支持。
w.show();
return app.exec();
}

Qt4.3.4下面创建一个OpenGL 窗口

时间: 2024-10-18 15:51:12

Qt4.3.4下面创建一个OpenGL 窗口的相关文章

创建一个OpenGL窗口

在上节课用VS2017搭建OpenGL开发环境中,我们搭建好了OpenGL开发环境.这节课编写代码去测试开发环境. 还是用上节课创建的OpenGL项目,右击源文件->添加新建项CreateWindow.cpp. 编写代码: #include<iostream>#define GLEW_STATIC#include <GL/glew.h>#include<GLFW\glfw3.h> using namespace std; int main(int argc, ch

jsWindow 对象 Window 对象 Window 对象表示浏览器中打开的窗口。 如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。 注释:没有应用于 window 对象的公开标准,不过所有浏览器都支持该对象。 Window 对象集合 集合 描述 frames[] 返回窗口中所有命

一.JSX简介 JSX就是Javascript和XML结合的一种格式.React发明了JSX,利用HTML语法来创建虚拟DOM.当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析. 如下(JS写法) var child1 = React.createElement('li', null, 'First Text Content'); var child2 = React.createElement('li', null, 'Second Text Content'); var

第01课 OpenGL窗口(1)

教程的这一节在2000年一月彻底重写了一遍.将会教您如何设置一个 OpenGL窗口.它可以只是一个窗口或是全屏幕的.可以任意 大小.任意色彩深度.此处的代码很稳定且很强大,您可以在您所有的OpenGL项目中使用.我所有的教程都将基于此节的代码!所有的错误都有被报告.所以应该没有内存泄漏,代码也很容易阅读和修改.感谢Fredric Echols对代码所做的修改! 现在就让我们直接从代码开始吧.第一件事是打开VC然后创建一个新工程.如果您不知道如何创建的话,您也许不该学习OpenGL,而应该先学学V

如何利用CEF3创建一个简单的应用程序 (Windows Platform)

1. 说明 这篇文章主要讲述如何利用CEF3来创建一个简单的应用程序,引用的是1535及以上版本中包含的 Cefsimple 项目例子.如果想知道关于CEF3更多的使用方法,可以去访问 GeneralUsage. 2. 开始 首先,根据自身所使用的开发平台,可以去 这里 下载对应的发布版本.针对这个教程,我们需要下载1750或者更新的版本.当前支持的平台有Windows, Linux和Mac OS X.每一个版本都包含了当在特定平台上编译特定版本CEF3时所需要的所有文件和资源.您可以通过包含在

VB6 如何创建一个标准控制台程序

打开 VB6 并新建一个标准EXE程序,把窗口删掉,然后再加入一个模块. 在模块中加入AllocConsole.FreeConsole.SetConsoleTitle.Sleep的API声明: Public Declare Function AllocConsole Lib "kernel32.dll" () As LongPublic Declare Function FreeConsole Lib "kernel32.dll" () As LongPublic

[小白知识记录]--浏览器打开一个新窗口记录

很小白的一个知识点:想在浏览器中点击按钮后,弹出一个单独的窗口.如有的页面显示一个概要信息,用户点击某个按钮后弹出一个窗口显示详细的信息.方法是js的window.open方法:window.open(URL,target,features,replace) 参数 描述 URL 一个可选的字符串,声明了要在新窗口中显示的文档的 URL.如果省略了这个参数,或者它的值是空字符串,那么新窗口就不会显示任何文档. target 一个可选的字符串,该字符串是一个由逗号分隔的特征列表,可以包括数字.字母和

[Swift通天遁地]四、网络和线程-(13)创建一个Socket客户端

请点击Socket服务端文章:[Swift通天遁地]四.网络和线程-(14)创建一个Socket服务端 本文将演示Socket(套接字)客户端的使用. 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 在Github中下载项目:[SwiftSocket] 在[Source]文件夹,按下[Shift]选择多个文件. [yudpsocket.c] [ytcpsocket.c] [UDPClient.swift] [TCPClient.swift] [Swif

MFC创建一个窗口五大步

.窗口的创建步骤: 1.设计一个窗口类: WNDCLASS结构体参数: (1)       UINT style:窗口类的类型, (2)       WNDPROC lpfnWndProc:窗口的过程,接收一个指针,在程序中会将一个回调函数赋给他,有系统自动调用 (3)       int cbClsExtra:追加一定字节的额外存储空间,附加内存空间,常设置为0 (4)       int cbWndExtra:窗口的附加内存,常置为0 (5)       HINSTANCE hInstanc

创建一个弹出DIV窗口

创建一个弹出DIV窗口 摘自:   http://www.cnblogs.com/TivonStone/archive/2012/03/20/2407919.html 创建一个弹出DIV窗口可能是现在网站/网页制作中最常碰到的问题之一.传统的 JavaScript弹窗已经不适合目前网站的设计理念了,理由有二:首先,不友好——生硬的弹出对话框且伴随着“哐”的一声对用户体验是个很大的挑战: 其次,兼容性不够强——有相当多的浏览器屏蔽了这种JS的Alert()方法.于是,一个良好用户体验的网站需要一种