一、常见问题
- glUseProgram前需要 glMakeCurrent 切换环境;
- 使用过程中绑定的 对象ID, 使用完需要绑定0重置(如VAO顶点数组对象、VBO顶点缓冲对象、EBO顶点索引、FBO帧缓冲区对象、TxtureId等);
- glBindFrameBuffer绑定的是0(默认)时,此时绑定的是屏幕默认帧缓冲区,多重绘制最后需要显示时记得先绑定到0;
- glError 0x506: 检查FrameBuffer有效性;
glError 0x501: 检查上下文环境、program等对象索引是否正确;
glError 0x502:检查传入的参数数据是否正确(顶点数据等); - 关于坐标:
a) 三个坐标系方向见下图:世界坐标系标定了图形在OpenGL中的位置,纹理坐标系标定了纹理的位置,屏幕坐标系标定了屏幕图形显示位置
b) 一般情况下,世界坐标系原点对应屏幕中心点;
c) 当纹理的四个顶点坐标与世界四个顶点坐标的绝对位置一一对应时,纹理在OpenGL中呈现原始渲染,显示到屏幕时上下颠倒(根据系统决定);
-
关于FBO:
a) FBO的id为0时,渲染绑定的纹理会默认渲染输出到屏幕,屏幕会颠倒显示(根据系统决定);
b) FBO的id不为0时,渲染绑定的纹理会输出到FBO挂载的缓冲区纹理中,输出纹理方向规则与第5条一致(即顶点对应时FBO渲染不会改变纹理的方向);