基于glut的OpenGL框架(一)

这篇博客记录了一位OpenGL初学者使用C++和glut框架构建面向对象的OpenGL程序的过程。主要内容包括如何创建一个16:9的窗口,定义Reshape、Render和Idle回调函数,以及GLWidget类的设计和实现,旨在为后续的图形绘制打下基础。
摘要由CSDN通过智能技术生成

基于glutOpenGL框架(一)

——面向对象框架的搭建

我是一名OpenGL的初学者,在看完《OpenGL超级宝典》的前几章后,开始迫不及待地动手验证一下书上程序的代码了。我发现书上的例子程序是用C语言描述的,虽然简单,但却无法在此基础上进行扩展,即使扩展了也仅仅是添加了几个函数并且调用之,没有什么层次性。所以我开始利用C++和已经形成了标准的glut框架编写自己的OpenGL框架。

首先是我的main.cpp文件:

// main.cpp
// 110852 最后编辑
#include "GLWidget.h"
// 宽屏的程序要求纵横比16:9,我们指定高,宽就出来了。
#define _WINDOW_HEIGHT_     360
#define _WINDOW_WIDTH_      _WINDOW_HEIGHT_ * 16 / 9
static GLWidget* pWidget = 0;
void Reshape( int x, int y )
{
    
    assert( pWidget != 0 );
    pWidget->Reshape( x, y );
}
void Render( void )
{
    
    glClear( GL_COLOR_BUFFER_BIT );           // 用黑色清屏
    glColor3ub( 255, 255, 255 );
    glRecti( 0, 0, _WINDOW_WIDTH_, _WINDOW_HEIGHT_ );// 绘制白色的矩形背景
    // 执行widget里的绘图函数
    assert( pWidget != 0 );
    pWidget->Render( );
    // 交换缓存
    glutSwapBuffers( );
}
void Idle( void )       // 空转时候运行的函数
{
    
    assert( pWidget != 0 );
    // 如果有必要的话,让其更新
    glutPostRedisplay( );
}
int main( int argc, char** argv )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值