1:opengGL做立体图,是在三维坐标系中,多次试验,弄清三维坐标系方向,画三角形的原理及成像机制。代码解释一波。
//实例化OpenGL对象
OpenGL gl = new OpenGL();
//清空Depth和Color缓存
gl.Clear(OpenGL.GL_DEPTH_BUFFER_BIT | OpenGL.GL_COLOR_BUFFER_BIT);
//加载坐标系在屏幕画布中间
//右手坐标系:中指对己为正Z、食指朝天为正Y、拇指向右为正X
gl.LoadIdentity();
gl.Begin(OpenGL.GL_TRIANGLES); //开始画三角形
{
gl.Vertex(1.0f, 0.0f, -10.0f); //画三角形原理:两个向量及向量起点
gl.Vertex(2.0f, 0.0f, -10.0f); //直接夹的区域即为所做三角形
gl.Vertex(1.0f, -1.0f, -10.0f);
}
gl.End(); //必须要有结束符号
2:当使用诸如函数:gl.translate()、gl.rotate()时是对整个坐标系,相对屏幕中心进行移动、旋转等,接下若没有使用gl.LoadIdentity() 函数的话,素有图像都是在移动旋转后的图像画的,与前一个坐标系没有关系。
2.1在画三角形时,若gl.Vertex(x,y,z)中的所有z坐标都为0的话,会导致看不见图像,可能你已经画出来了,但因为视点问题,没展示出来,这时候只需要将所有的z都减去一个合适的整数即可。
2.2gl.translate(x,y,z)就是按当前坐标,分别移动x,y,z个距离
2.3gl.rotate(x,y,z)分别绕着三个轴,逆时针转动x,y,z度。
3:正方形相当于两个三角形拼接而成,每个点的先后顺序对作图结果有影响,要顺时针或逆时针画完,不能先画对角线的点。
4:若平移后需要回到中心坐标,调用gl.LoadIdentity() 即可。