基于glut的OpenGL框架(一)
——面向对象框架的搭建
我是一名OpenGL的初学者,在看完《OpenGL超级宝典》的前几章后,开始迫不及待地动手验证一下书上程序的代码了。我发现书上的例子程序是用C语言描述的,虽然简单,但却无法在此基础上进行扩展,即使扩展了也仅仅是添加了几个函数并且调用之,没有什么层次性。所以我开始利用C++和已经形成了标准的glut框架编写自己的OpenGL框架。
首先是我的main.cpp文件:
// main.cpp // 11时08分52秒 最后编辑 #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 )