OpenGL——glBegin()与glEnd()函数使用注意点

         OpenGL是一个工业标准的图形开发应用接口。它的接口定义简单,但是功能却十分强大,适合图形开发初学者使用。

     

      在OpenGL最初的定义中,几何对象数据的输入是通过调用glBegin()和glEnd()接口对来实现的。glBegin()的参数表示其下所接收的数据是何种类型,如点,线段,三角型,扇形三角行,多边形等等。


      而如glTranslatef(), glScalef(), glRotatef()等接口的作用是对当前模型空间进行几何转换。如glTranslatef(1,2,3);表示把模型的世界坐标原点从当前位置(系统总认为是(0,0,0))转到起相对位置(1,2,3)。注意,OpenGL空间使用的是右手系的定义,与屏幕水平方向一致,并方向向右的是x轴;与屏幕方向垂直方向一致,并方向向上的是y轴;与屏幕屏幕垂直,方向向外的是z轴。


      glTranslatef()等此类几何转换接口在glBegin()和glEnd()之间是无效的。因此,如果想对模型的位置进行转换,要在调用glBegin()和glEnd()接口对之间进行处理。这是许多初学者特别容易犯错的地方,而且这个错误不容易找出来。


      例如,以下的代码,并不会把模型的位置进行转移:

      glBegin(GL_TRIANGLES)

      glTranslatef(1,2,3);

      render model......

      glEnd()


      而应该这样调用:

      glTranslatef(1,2,3);

      glBegin(GL_TRIANGLES)

      render model......

      glEnd()


     

你可能感兴趣的:(图形)