1. 初始化SDL和OPenGL
    1. SDL
      1. SDL_Init
      2. SDL_GL_SetAttribute添加对OpenGL的支持
      3. SDL_SetVideoMode设置视频模式
    2. OpenGL
      1. glEnable(GL_DEPTH_TEST);打开深度测试
      2. glDepthFunc(GL_LESS);渲染方式
        1. glDepthFunc(GL_LEQUAL) :当深度相同或深度更小的时候进行渲染。 glDepthFunc(GL_LESS) :当深度小的时候进行渲染。
      3. glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
        1. 第一个参数是GL_PERSPECTIVE_CORRECTION_HINT,时是指定颜色和纹理坐标的插值质量. GL_FASTEST为使用速度最快的模式. GL_NICEST为使用质量最好的模式.
      4. glClearColor(0, 0, 0, 0);
      5. glShadeModel(GL_SMOOTH);着色模型
        1. glShadeModel(GL_SMOOTH); // 平滑方式,这也是默认方式
        2. glShadeModel(GL_FLAT); // 单色方式
      6. glEnable(GL_TEXTURE_2D);2D材质
      7. glCullFace(GL_BACK); glEnable(GL_CULL_FACE);
        1. glFrontFace用于指 定正面的绕序,默认是“逆时针为正”,即传入参数GL_CCW,可以改成GL_CW顺时针
        2. glCullFace 传入GL_FRONT来剔除正面,或者GL_BACK来剔除背面,之前先得glEnable(GL_CULL_FACE)。
        3. 个人理解,就是不画背面
      8. glEnable(GL_DITHER);
        1. 对于可用颜色较少的系统, 可以以牺牲分辨率为代价, 通过颜色值的抖动来增加可用颜色数量。 抖动操作是和硬件相关的, OpenGL允许程序员所做的操作就只有打开或关闭抖动操作。 实际上,若机器的分辨率已经相当高, 激活抖动操作根本就没有任何意义。要激活或取消抖动, 可以用glEnable(GL_DITHER)和glDisable(GL_DITHER)函数。 默认情况下,抖动是激活的
      9. glViewport(0, 0, screen->w, screen->h);设置OpenGL显示屏幕的大小
      10. glColorMaterial(GL_FRONT, GL_DIFFUSE); glEnable(GL_COLOR_MATERIAL);设置材质属性
      11. glAlphaFunc(GL_GREATER, 0.1f);
        1. 在RGBA模式下,根据alpha测试中的alpha值,来确定是接收还是拒绝一个片元。
        2. glEnable/glDisable(GL_DEPTH_TEST):激活/取消alpha测试
        3. glAlphaFunc设置alpha测试的参考值和比较函数:
        4. void glAlphaFunc(GLenum func,GLclampf ref);
        5. 参考值ref取值在0和1之间截取。参数func的可能值及其含义如下:
        6. GL_NEVER:总不接受该片元;GL_ALWAYS:总是接受该片元;
        7. GL_LESS:若片元alpha<参考alpha ,接受该片元;GL_LEQUAL:片元alpha≤参考alpha,接受;
        8. GL_EQUAL:片元alpha=参考alpha,接受;GL_GEQUAL:片元alpha≥参考alpha,接受;
        9. GL_GREATER:片元alpha>参考alpha,接受;GL_NOTEQUAL:片元alpha≠参考alpha,接受;