2.1 点、直线、多边形

OpenGL中的点将被画成单个的像素。同一像素上,OpenGL可以绘制许多坐标只有稍微不同的点,但该像素的具体颜色将取决于OpenGL的实现。

OpenGL的直线必须是有限长度,它可以由两个端点来确定。(可以理解为数学中的线段)

多边形是由多条线段首尾相连而形成的闭合区域。OpenGL规定,一个多边形必须是一个“凸多边形”(其定义为:多边形内任意两点所确定的线段都在多边形内,由此也可以推导出,凸多边形不能是空心的)。多边形可以由其边的端点(这里可称为顶点)来确定。(注意:如果使用的多边形不是凸多边形,则最后输出的效果是未定义的——OpenGL为了效率,放宽了检查,这可能导致显示错误。要避免这个错误,尽量使用三角形,因为三角形都是凸多边形)

“点”是一切的基础

一、关于点
关于点
1.指定点的大小
点的大小默认为1个像素

void glPointSize(GLfloat size); //改变点的大小

size必须大于0.0f,默认值为1.0f,单位为“像素”。

2.
画点的函数
glVertex*

二、关于直线
1.指定直线宽度
直线的宽度默认为1个像素

void glLineWidth(GLfloat width); //指定直线宽度

width 必须大于0.0f,默认值为1.0f,单位为“像素”。

2.画虚线
void glLineStipple(GLint factor, GLushort pattern); //设置虚线的样式
glEnable(GL_LINE_STIPPLE); //启动虚线模式
glDisable(GL_LINE_STIPPLE); //关闭虚线模式

pattern是由1和0组成的长度为16的序列,从最低位开始看,如果为1,则直线上接下来应该画的factor个点将被画为实的;如果为0,则直线上接下来应该画的factor个点将被画为虚的。

示例:

    glLineWidth(3.0f);          //设置直线宽度

    glLineStipple(1, 0x3F07);   //设置虚线的模式
    glEnable(GL_LINE_STIPPLE);  //启用虚线

    glPushMatrix(); 
        glTranslatef(0.0f,0.0f,-4.0f);
        glBegin(GL_LINES);
            glVertex3f(-2.0f,0.0f,0.0f);
            glVertex3f(2.0f,0.0f,0.0f);
        glEnd();
    glPopMatrix();

效果图:
这里写图片描述

此时虚线模式为Ox3F07(二进制形式为0011111100000111),它所画出来的直线是这样的:先连续绘制3个像素,然后连续5个像素留空,再连续绘制6个像素,最后两个像素留空(注意,首先是从低位开始的)。如果factor是2,那么这个模式便被扩展为:先连续绘制6个像素,然后连续10个像素留空,再连续绘制12个像素,最后4个像素留空。
如果没有启用点画线功能,OpenGL会自动把pattern当做为OxFFFF,把factor当成1。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值