当前位置: 首页 > 工具软件 > SharpGL > 使用案例 >

SharpGL学习基础篇--坐标系中的三角形

何嘉运
2023-12-01

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() 即可。

 类似资料: