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