计算机图形学(二)输出图元_1_OpenGL画点函数

  OpenGL画点函数
       要描述一个点的几何要素,我们只需在世界坐标系中指定一个位置。然后该坐标位置和场景中 已有的其他几何描述一起传递给观察函数。除非指定其他属性值,OpenGL图元按默认的大小和颜 色来显示默认的图元颜色是白色,而默认的点大小等于一个屏幕像素大小。 使用下面的OpenGL函数可指定一个点位置的坐标值:
glVertex*();
       这里的星号(*)表示该函数要有后缀码。这些后缀码用来指明空间尺寸、用做坐标值的数据类型 和可能的向量形式坐标描述。在glBegin函数和glEnd函数之间必须有一个glVertex函数。glBegin 函数的变量用来指定要显示的输出图元的类型,而glEnd函数没有变量。对于点的绘制,glBegin函 数的变量是符号常量GL_POINTS。因此,一个点位置的OpenGL描述形式是

 glBegin(GL_POINTS);
          gl_Vertex*();
 glEnd();
       尽管术语顶点(vertex)严格地代表一个多边形的“角”点、一个角两边的交点、椭圆和其主轴的 交点或几何结构中其他类似的坐标位置,OpenGL中的glVertex函数可用于描述任意一点的位置 这样,使用一个简单的函数来描述点、线段和多边形,而更多地使用多边形面片来描述场景对象。
       OpenGL中的坐标位置可以有二维、三维或四维。g1Vertex的后缀为2、3或4表示其坐标位置 维数。四维描述意味着齐次坐标(homogeneous-coordinate)表示,其中的齐次参数h(第四维坐 标)是笛卡儿坐标值的比例因子。齐次坐标表示对利用矩阵形式表达变换操作很有用,第4章将对 其进行详细讨论。由于OpenGL将二维作为三维的特殊情况来处理,任意(x, y)坐标描述等同于h =1 时的(x, y, 0) 。
       我们需要指出在坐标的数值描述中使用什么数据结构。这由glVertex函数的第二个后缀来完 成。用于指定数值数据类型的后缀是:i(整数)、s(短整数)、f(浮点数)和d(双精度浮点数)。 最后,glVertex中可以使用显式的坐标值或引人矩阵形式坐标位置的单个变量。如果使用矩阵形式 坐标位置,则需要第三个后缀码:V(“向量”)。
       在下面的例子中,在斜率为2的直线上绘出了三个等距离的点。坐标用整数对 给出。
glBegin (GL_POINTS);
    glVertex2i(50,100);
    glVertex2i(75,150);
    glVertex2i(100,200);
glEnd();



换一种方法,我们可以将前面这些点的坐标值以矩阵形式描述:
int pointl []={50,100};
int point2 []={75,150};
int point3 []={100,200};
且调用OpenGL函数来绘出这三个点:
glBegin(GL_POINTS);
  glVertex2iv(pointl);
  glVertex2iv(point2);
  glVertex2iv(point3);
glEnd();
下面是在三维世界坐标系中描述两个点位置的例子。这里按显式浮点数方式给出坐标。
glBegin(GL_POINTS);
  glVertex3f(-78.05,909.72,14.60);
  glVertex3f(261.91,-5200.67,188.33);
glEnd();

我们还可以为各种维数中描述的点位置定义c++类或结构(struct)。例如
  class wcPt2D{
  public:
      CLfloat x,y;
};

有了这一类定义,我们可以使用下列语句描述一个二维世界的坐标点位置:
 wcPt2D pointPos;
 pointPos.x = 120.75;
 pointPos.y = 45.30;
 glBegin(GL_POINTS);
       glVertex2f(pointPosx,pointPos.y);
 glEnd();

然后我们可以在C++过程中使用OpenGL画点函数来实现setPixel命令。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值