计算机图形学-预告2

计算机图形学-预告2

首先先声明,代码是来自www.cs.unm.edu/~angel。在下这里指示添加一些注释或者说明以及把里面的English翻译成Chinese。
下面的这些都是一些公共的工具文件以及方法。

初始化窗口

在C++代码中,main函数就是主要的入口
- glutInit(int *argc, char **argv);//这个就是main函数里面第一个需要调用的方法,打开一个窗口之前,窗口系统和OpenGL之间的交互就是通过这个函数调用来初始化。其参数是用来传递命令行参数,同main的参数一样。
- glutCreateWindow(char *tilte);//这个方法是初始化打开一个OpenGL窗口,
- glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);//这个方法可以在上一个方法创建窗口之前设置,设置显示模式为:RGB颜色、深度缓存、双缓冲。其取值可以如下(来自百度)

对应宏定义意义
GLUT_RGB0x0000指定 RGB 颜色模式的窗口
GLUT_RGBA0x0000指定 RGBA 颜色模式的窗口
GLUT_INDEX0x0001指定颜色索引模式的窗口
GLUT_SINGLE0x0000指定单缓存窗口
GLUT_DOUBLE0x0002指定双缓存窗口
GLUT_ACCUM0x0004窗口使用累加缓存
GLUT_ALPHA0x0008窗口的颜色分量包含 alpha 值
GLUT_DEPTH0x0010窗口使用深度缓存
GLUT_STENCIL0x0020窗口使用模板缓存
GLUT_MULTISAMPLE0x0080指定支持多样本功能的窗口
GLUT_STEREO0x0100指定立体窗口
GLUT_LUMINANCE0x0200窗口使用亮度颜色模型

- glutInitWindowSize( 512, 512 );//这个也是可以在创建窗口之前指定。还有glutInitWindowPosition( 0 , 0);
- glewInit(),glew的主要工作就是使用glewInit()函数导出所有显卡支持的函数。使得开发代码如下:

    glewInit();
    gl*(...);
  • glutDisplayFunc(void (*func)(void)),显示回调函数,只有应用程序确定需要重新绘制的时候会调用。
  • glutKeyboardFunc(void (*func)(unsigned char, int, int ),键盘响应回调函数。
  • glutMouseFunc(void (*func)(int, int, int, int ),鼠标响应回调函数。
  • glutMainLoop(),使程序进入一个事件处理循环。

大体框架


void init( void )
{
    //数据初始化等
}

void display( void )
{
    //绘制等
}

void keyboard( unsigned char key, int x, int y )
{
    //键盘事件处理
}

int main( int argc, char **argv )
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_RGBA );
    glutInitWindowSize( 512, 512 );

    // If you are using freeglut, the next two lines will check if
    // the code is truly 3.2. Otherwise, comment them out

    glutInitContextVersion( 3, 2 );
    glutInitContextProfile( GLUT_CORE_PROFILE );

    glutCreateWindow( "窗口名称" );

    //@{ add by juetion begin
    //GLEW obtains information on the supported extensions from the graphics driver.
    //Experimental or pre-release drivers, however, might not report every available
    //extension through the standard mechanism, in which case GLEW will report it unsupported.
    //To circumvent this situation, the [glewExperimental] global switch can be turned on by
    //setting it to [GL_TRUE] before calling [glewInit()],
    //which ensures that all extensions with valid entry points will be exposed.
    glewExperimental = GL_TRUE;
    //add by juetion end
    //}@
    //初始化glew扩展库
    glewInit();

    init();
    glutDisplayFunc( display );
    glutKeyboardFunc( keyboard );

    glutMainLoop();
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小明是我的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值