opengl学习笔记(三)-点和线段的绘制

主要参考了:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html里的内容。

1、点坐标的指定

下面的代码在屏幕上画出一组孤立的点,点之间没有任何连线。

void display()

{
	glClear(GL_COLOR_BUFFER_BIT);
	glBegin(GL_POINTS);
	glVertex2f(-0.5,-0.5);   //点P1
	glVertex2f(-0.5,0.5);    //点P2
	glVertex2f(0.5,0.5);    //点P3
	glVertex2f(0.5,-0.5);   //点P4
	glEnd();
	glFlush();
}


编译之后运行,如果你的眼神够好,会发现在窗口中有4个小白点。也就是正方形的4个顶点。如图1所示。


代码解释

名字以glVertex开头的一系列函数用于指定顶点坐标,名字里的2表示2维即两个坐标(x和y),f表示坐标的类型是float。这一系列函数包括:

glVertex2d
glVertex2f
glVertex3f
glVertex3fv
等等。
数字表示参数的个数,字母表示参数的类型,具体含义是

                   s表示16位整数(OpenGL中将这个类型定义为GLshort),
                   i表示32位整数(OpenGL中将这个类型定义为GLint和GLsizei),
                   f表示32位浮点数(OpenGL中将这个类型定义为GLfloat和GLclampf),
                   d表示64位浮点数(OpenGL中将这个类型定义为GLdouble和GLclampd)。
                   v表示传递的几个参数将使用指针的方式,见下面的例子。
这些函数除了参数的类型和个数不同以外,功能是相同的。例如,以下五个代码段的功能是等效的:

glVertex2i(1, 3);                         
glVertex2f(1.0f, 3.0f);
glVertex3f(1.0f, 3.0f, 0.0f);
glVertex4f(1.0f, 3.0f, 0.0f, 1.0f);

GLfloat VertexArr3[] = {1.0f, 3.0f, 0.0f};
glVertex3fv(VertexArr3);
以后我们将用glVertex*来表示这一系列函数。
注意: OpenGL的很多函数都是采用这样的形式,一个相同的前缀再加上参数说明标记,这一点会随着学习的深入而有更多的体会。

对例子中的代码

glVertex2f(-0.5, 0.5)

;这一句的意思就是给出一个点,其x坐标和y坐标分别为-0.5和0.5。在本节的例子中,你可以认为坐标原点在窗口的中心,x轴向右为正, y轴向上为正。窗口绘图区的高度度和宽度都是1。

2、线段的绘制

glBegin函数的参数是告诉程序对后面给出的点集进行什么操作。这个参数的常见取值有:

(1) GL_POINTS:画出单个的点,点之间没有任何连线,效果如上面的图1。

92) GL_LINES:两个点一组,每组之间一条线段。(对上面的代码,参数如果是GL_LINES,则画出两条线段,分别是P1P2和P3P4。

效果如图2所示。(红色文字是我自己加的,以下同)


(3) GL_LINE_STRIP:用给出的点画出一条连续折线,除最后一个点外。每一个点都是下一段的起点。即画出三条线段P1P2、P2P3、P3P4,

效果如图3所示。


(4) GL_LINE_LOOP:用给出的点画出一个闭合折线。也就是在GL_LINE_STRIP的基础上再把最后一个点和第一个点连起来。即画出四条线段P1P2、P2P3、P3P4、P4P1。效果如图4所示







  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于绘制多边形,我会为您提供一些OpenGL学习笔记。 首先,我们需要了解一下OpenGL绘制多边形的基本流程。OpenGL绘制多边形的过程包括个基本步骤:指定顶点数据、指定绘制方式和执行绘制。 指定顶点数据:在OpenGL中,我们可以使用glVertex等函数来指定多边形的顶点。例如,如果我们要绘制一个角形,我们可以使用以下代码: ``` glBegin(GL_TRIANGLES); glVertex3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 0.0f); glEnd(); ``` 其中,glBegin和glEnd函数用来指定绘制的方式,GL_TRIANGLES表示绘制角形。glVertex3f函数用来指定角形的顶点,每个顶点个坐标值组。 指定绘制方式:OpenGL支持多种绘制方式,例如GL_TRIANGLES、GL_TRIANGLE_STRIP、GL_TRIANGLE_FAN等。在上面的代码中,我们使用了GL_TRIANGLES来指定绘制角形的方式。 执行绘制:最后,我们需要调用glDrawArrays函数来执行绘制。例如,如果我们要绘制一个角形,我们可以使用以下代码: ``` glDrawArrays(GL_TRIANGLES, 0, 3); ``` 其中,GL_TRIANGLES表示绘制角形的方式,0表示顶点数组的起始位置,3表示顶点的数量。 以上就是OpenGL绘制多边形的基本流程,下面我们来看一下如何绘制着色多边形。 绘制着色多边形的过程与绘制普通多边形的过程基本相同,只需要在绘制前调用glColor函数来指定颜色即可。例如,如果我们要绘制一个红色的角形,我们可以使用以下代码: ``` glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); // 指定颜色为红色 glVertex3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 0.0f); glEnd(); ``` 其中,glColor3f函数用来指定颜色,个参数分别表示红、绿、蓝个颜色通道的值,取值范围为0到1。 希望以上内容能够帮助到您。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值