论坛首页 编程语言技术论坛

VC++ OpenGL开发系列 概论

浏览 3335 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-21  
C++

      如何描绘空间上的一个物体,在图形学上有很多方法,OpenGL通过将物体抽象为笛卡尔坐标系下点、线段、多边形的集合,再将点、线段、多边形等通过在函数glBegin()与glEnd()之间的一系列顶点数据,绘制出图形还原物体。

     OpenGL通过glBegin()与glEnd()函数完成点、线、三角形、四边形及多边形的绘制,glBegin(GLenum)函数原型如下:

   

glBegin(GLenum)|
...
glEnd()

 

参数GLenum有以下10个参数:

GL_POINTS:表示将要绘制点

GL_LINES:表示函数开始绘制线

GL_LINE_STRIP:表示函数将开始绘制折线

GL_LINE_LOOP:表示函数将开始绘制闭合曲线

GL_TRIANLES:表示函数开始绘制三角形

GL_TRIANLE_STRIP:表示函数将开始绘制三角形片

GL_TRIANLE_FAN:表示函数将开始绘制三角形扇

GL_QUADS:表示函数开始绘制四边形

GL_QUAD_STRIP:表示函数开始绘制多边形片

GL_POLYGON:表示函数绘制多边形

1、绘制二维的点:

glBegin(GL_POINTS);
glVertex2f(0.0f,0.0f);
glEnd();

 

在初始化OPENGL运行环境后,如上代码,将绘制一个2维的点,点的坐标为(0,0),OpenGL中绘制的二维的点实际和三维点一样,不过二维的点是将笛卡尔坐标的z轴定位在原点,二维点的坐标也就是(x,y,0)

2、绘制线:

glBegin(GL_LINES);
glVertex2f(0.0f,0.0f);
glVertex2f(0.01f,-0.4f);
glEnd();

 

OpenGL的任何图形都是基于点,如上绘制2个点,链接成一个直线,当然绘制以后可能出现锯齿,这样就需要进行一下反走向处理。

GL_LINES:绘制两条线段

GL_LINE_STRIP:绘制连续折线

GL_LINE_LOOP:绘制闭合曲线

3种绘制方式会产生不同的效果,具体在vc环境下测试即可看见。

3、绘制面

绘制三角形:

glBegin(GL_TRIANGLES);
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(1.0f,0.0f,0.0f);
glVertex3f(0.0f,1.0f,0.0f);
glEnd();

 

如上的代码将会在笛卡尔坐标中根据三个点绘制一个三角形,三角形的三个点坐标分别为(0,0,0)、(1,0,0)、(0,1,0)

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics