1.
本函数可以禁用多边形正面或背面上的光照、阴影和颜色计算及操作,消除不必要的渲染计算是因为无论对象如何进行旋转或变换,都不会看到多边形的背面。用GL_CULL_FACE参数调用glEnable和glDisable可以启用或禁用剔除。
glEnalbe(GL_CULL_FACE) 开启剔除操作效果
glDisable(GL_CULL_FACE) 关闭剔除操作效果
2.
当我们需要绘制透明图片时,就需要关闭它
glDisable(GL_DEPTH_TEST);
3. glBlendFunc
http://blog.chinaunix.net/uid-20622737-id-2850251.html
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBlendEquation(GL_FUNC_ADD);
glp_bt.draw();
glp_up.draw();
4 设置浏览窗口大小
glViewport(0, 0, 800, 600);
5. glBlendEquation
https://blog.csdn.net/flycatdeng/article/details/82664564
6 清空显存数据
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
7. opengl 纹理坐标和 定点坐标
glTexCoord2f( 0.0, 0.0 ); glVertex3f( -1.0, -1.0, 1.0 );
glTexCoord2f( 1.0, 0.0 ); glVertex3f( 1.0, -1.0, 1.0 );
glTexCoord2f( 1.0, 1.0 ); glVertex3f( 1.0, 1.0, 1.0 );
glTexCoord2f( 0.0, 1.0 ); glVertex3f( -1.0, 1.0, 1.0 );
Vertex v0(glm::vec3(-1, 1, 0) , glm::vec2(0, 1));
Vertex v1(glm::vec3(1, 1, 0) , glm::vec2(1, 1));
Vertex v2(glm::vec3(1, -1, 0 ) , glm::vec2(1.0, 0));
Vertex v3(glm::vec3(-1, -1, 0), glm::vec2(0, 0));
8 多线程
OpenGL和多线程基本上是敌人:在任何给定的时刻,只有一个线程可以“拥有渲染上下文”-是的,只要线程切换,您就可以切换GL渲染上下文,但要考虑成本,并考虑从一个OEM驱动程序到下一个,它没有得到很好的支持,可能对某些人而不是其他人有用。唯一的逻辑(也是明智的)选择是将所有OpenGL调用都保留在一个线程中(注意:有一些例外,有些线程可以在gl中调用这些与流数据有关的东西,而无需拥有渲染上下文) 。不幸的是,我们不能像建议的那样简单地在线程周围传递GL上下文,我们必须调用(w)glMakeCurrent,它告诉GL“此调用者线程现在拥有您”,但是无法告诉其他线程...