2024年3月17日发(作者:)

附录A OpenGL函数简介

OpenGL是国际公认的在计算机中使用广泛、易学易用的三维图形标准,附录A给出了

本教材所用OpenGL函数的简单说明(/documentation/manual/),

供读者查询使用。

m

void glAccum ( GLenum op , GLfloat value );

参数说明:

op 取符号:GL_ACCUM,GL_LOAD,GL_ADD,GL_MULT,GL_RETURN。

value 取一个浮点数,op决定怎样使用value。

功能描述:

按参数op指定的方式,在累积缓冲区中进行如下操作

GL_ACCUM 从当前选定的缓冲区(缺省值为当前的颜色缓冲区)中逐点读取其R、G、

B、A值,该RGBA乘以value加上累积缓冲区中的当前值后,再存入累

积缓冲区中保存。

GL_LOAD 从当前选定的缓冲区中逐点读取其R、G、B、A值,该RGBA乘以value

后,再存入累积缓冲区中保存。

GL_ADD 将value直接加到累积缓冲区中每点的RGBA上。

GL_MULT 略。

GL_RETURN 将累积缓冲区中的RGBA乘以value后,送当前颜色缓冲区中显示。

n, glEnd

void glBegin ( GLenum mode );

参数说明:

mode 取符号:GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP,

GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS,

GL_QUAD_STRIP和 GL_POLYGON。

void glEnd (void );

功能描述:

函数glBegin, glEnd成对出现,用来界定一个或一组类似图形元素顶点数据的开始与

结束,图形元素的类型由mode确定。

GL_POINTS 每个顶点函数glVertex()描述了一个个孤立的顶点数据。

GL_LINES 每对顶点函数glVertex()描述了一直线段的两个顶点数据。

GL_LINE_STRIP 把n个glVertex()描述的顶点连接成一条连续的多笔折线。

GL_LINE_LOOP 把n个glVertex()描述的顶点连接成一封闭的多笔折线。

GL_TRIANGLES 相邻的三个顶点构成一个三角形,多个三角形则两两独立。

GL_TRIANGLE_STRIP 多个顶点定义一三角形带,见图9-8。

GL_TRIANGLE_FAN 多个顶点定义一三角扇形,见图9-8。

GL_QUADS 相邻的四个顶点构成一个四边形,多个四边形则两两独立。

GL_QUAD_STRIP 一组顶点定义一个四边形网格,见图9-9。

GL_POLYGON 一组顶点定义一个凸多边形。

Texture

1

void glBindTexture ( GLenum target , GLuint texture );

参数说明:

target 指定纹理绑定的目标,它只能是GL_TEXTURE_1D, GL_TEXTURE_2D 或

GL_TEXTURE_3D。

texture 一个指定的纹理名称。

功能描述:

该函数把名为texture的新纹理绑定到纹理目标上,该目标以前绑定的纹理自动断开。

4.glBlendFunc

void glBlendFunc ( GLenum sfactor , GLenum dfactor );

参数说明:

sfactor 指定如何计算RGBA的源融合因子,它的9个可取符号为GL_ZERO, GL_ONE,

GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA,

GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA 和

GL_SRC_ALPHA_SATURATE,其缺省值为GL_ONE。其余略。

dfactor 指定如何计算RGBA的目标融合因子,它的8个可取符号为 GL_ZERO,

GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA,

GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA和 GL_ONE_MINUS_DST_ALPHA,

其缺省值为GL_ZERO。其余略。

功能描述:

在RGBA模式下,该函数把源RGBA(新输入的像素值)与目标RGBA(原已存在于颜色缓冲

区中的像素值)融合在一起,并填充在颜色缓冲区中。初始条件下,该融合操作关闭,用

glEnable(GL_BLEND) 和 glDisable(GL_BLEND)分别启动和关闭融合操作。

具体的融合方式约定如下

源颜色与目标颜色、最后的融合颜色分别用(R

s

,G

s

,B

s

,A

s

) 、(R

d

,G

d

,B

d

,A

d

) 、(R

c

,G

c

,B

c

,A

c

) 表

示,这些数据都在0 与 (k

R

,k

G

,k

B

,k

A

) 之间。k

R

,k

G

,k

B

,k

A

的最大值是由显示卡存储器结构决定

的一个数据。

此时的融合操作是源颜色与目标颜色都先进行一个指定的缩放运算(源缩放因子和目标

缩放因子分别用(s

R

,s

G

,s

B

,s

A

) 和 (d

R

,d

G

,d

B

,d

A

)表示,但它们在表A-1中用(f

R

,f

G

,f

B

,f

A

)统一表示),

具体的缩放操作见表A-1;之后两者按照(A-1)式进行融合。

表A-1 源颜色与目标颜色选定的缩放运算

Parameter

GL_ZERO

GL_ONE

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

(

f

R

,

f

G

,

f

B

,

f

A

)

(0,0,0,0)

(1,1,1,1)

(

R

s

/

k

R

,

G

s

/

k

G

,

B

s

/

k

B

,

A

s

/

k

A

)

(1,1,1,1) −(

R

s

/

k

R

,

G

s

/

k

G

,

B

s

/

k

B

,

A

s

/

k

A

)

(

R

d

/

k

R

,

G

d

/

k

G

,

B

d

/

k

B

,

A

d

/

k

A

)

(1,1,1,1) −(

R

d

/

k

R

,

G

d

/

k

G

,

B

d

/

k

B

,

A

d

/

k

A

)

(

A

s

/

k

A

,

A

s

/

k

A

,

A

s

/

k

A

,

A

s

/

k

A

)

(1,1,1,1) −(

A

s

/

k

A

,

A

s

/

k

A

,

A

s

/

k

A

,

A

s

/

k

A

)

2