OpenGL函数原型
opengl学习(三)----绘制简单图形(一)
opengl学习(三)----绘制简单图形(⼀)今天说⼀说⼏种简单的图元。
所有的⼏何图元都是根据它们的顶点来描绘的。
⽽顶点就是它们在屏幕上的坐标位置。
我喜欢把这⼏个简单的图元称为点线⾯。
点,可以看到⼀个顶点;线,就是两个顶点指定的⼀条有限长度的线段;⾯,其实更准确讲是⼀个凸多边形。
opengl⾥所讲的多边形是内部⽤颜⾊填充的,视觉上称为⾯我个⼈认为是更贴近的。
当然,多边形也是由指定的顶点组成的。
需要注意的是,要想被opengl按照设计被绘制必须正确的认识到,所谓的多边形是顶点都处于⼀个平⾯上,凸多边形。
凸多边形不能理解的,请问度娘。
来看⼀个例⼦:C++代码1. glBegin(GL_POLYGON);2. glVertex2f(0.0, 0.0);3. glVertex2f(0.0, 3.0);4. glVertex2f(4.0, 3.0);5. glVertex2f(6.0, 1.5);6. glVertex2f(4.0, 0.0);7. glEnd();先不去关⼼代码本⾝,这段代码最终的结果是要指定5个顶点绘制⼀个凸五边形。
注意,不是5条线段⽽是⼀个凸五边形的平⾯。
不管是点线⾯的哪⼀种,都是需要指定⼀组顶点的。
如何判定顶点指定的开始和结束就是glBegin和glEnd的⼯作。
引⽤void glBegin(Glenum mode);标志着⼀个顶点数据列表的开始,它描述了⼀个⼏何图元。
mode参数指定了图元的类型。
void glEnd(void);标志着⼀个顶点数据列表的结束。
mode设置的不同,代表着将要绘制的图元也不同。
下⾯这个表就是图元的名称和含义:值含义GL_POINTS 单个的点GL_LINES ⼀对顶点被解释为⼀条直线GL_LINE_STRIP ⼀系列的连接直线GL_LINE_LOOP 和上⾯相同,但第⼀个顶点和最后⼀个顶点彼此相连GL_TRIANGLES 3个顶点被解释为⼀个三⾓形GL_TRIANGLES_STRIP 三⾓形的连接串GL_TRIANGLES_FAN 连接成扇形的三⾓形系列GL_QUADS 4个顶点被解释为⼀个四边形GL_QUADS_STRIP 四边形的连接串GL_POLYGON 简单的凸多边形的边界试想着,如果将glBegin(GL_POLYGON)修改为glBegin(GL_POINTS),绘制出来的将是什么图形呢? 哈哈,那就是5个点⽽已么。
OpenGL坐标系讲解
第一篇基于VC++的OpenGL编程讲座之坐标变换 2005年09月19日 11:32 天极yesky文/刘涛OpenGL通过相机模拟、可以实现计算机图形学中最基本的三维变换,即几何变换、投影变换、裁剪变换、视口变换等,同时,OpenGL还实现了矩阵堆栈等。
理解掌握了有关坐标变换的内容,就算真正走进了精彩地三维世界。
一、OpenGL中的三维物体的显示(一)坐标系统在现实世界中,所有的物体都具有三维特征,但计算机本身只能处理数字,显示二维的图形,将三维物体及二维数据联系在一起的唯一纽带就是坐标。
为了使被显示的三维物体数字化,要在被显示的物体所在的空间中定义一个坐标系。
这个坐标系的长度单位和坐标轴的方向要适合对被显示物体的描述,这个坐标系称为世界坐标系。
世界坐标系是始终固定不变的。
OpenGL还定义了局部坐标系的概念,所谓局部坐标系,也就是坐标系以物体的中心为坐标原点,物体的旋转或平移等操作都是围绕局部坐标系进行的,这时,当物体模型进行旋转或平移等操作时,局部坐标系也执行相应的旋转或平移操作。
需要注意的是,如果对物体模型进行缩放操作,则局部坐标系也要进行相应的缩放,如果缩放比例在案各坐标轴上不同,那么再经过旋转操作后,局部坐标轴之间可能不再相互垂直。
无论是在世界坐标系中进行转换还是在局部坐标系中进行转换,程序代码是相同的,只是不同的坐标系考虑的转换方式不同罢了。
计算机对数字化的显示物体作了加工处理后,要在图形显示器上显示,这就要在图形显示器屏幕上定义一个二维直角坐标系,这个坐标系称为屏幕坐标系。
这个坐标系坐标轴的方向通常取成平行于屏幕的边缘,坐标原点取在左下角,长度单位常取成一个象素。
(二)三维物体的相机模拟为了说明在三维物体到二维图象之间,需要经过什么样的变换,我们引入了相机(Camera)模拟的方式,假定用相机来拍摄这个世界,那么在相机的取景器中,就存在人眼和现实世界之间的一个变换过程。
图一、相机模拟OpenGL中的各种坐标变换从三维物体到二维图象,就如同用相机拍照一样,通常都要经历以下几个步骤:1、将相机置于三角架上,让它对准三维景物,它相当于OpenGL中调整视点的位置,即视点变换(Viewing Transformation)。
glortho函数
glortho函数在OpenGL中,进行绘制时需要确定坐标系的位置和大小,这个任务可以通过glortho函数来完成。
glortho函数提供了一个简单的方法来设置OpenGL的正交投影矩阵(Orthographic Projection Matrix)。
glortho函数的功能可以分为以下几个步骤:1. 确定视口大小在进行OpenGL绘制的时候,需要先确定视口的大小和位置。
视口可以理解为物理屏幕上的位置和大小,所有在视口范围内的图形都将被绘制在屏幕上。
可以通过调用glViewport函数来设置视口:glViewport(x, y, width, height);其中x和y表示视口在屏幕上的坐标,width和height表示视口的大小。
2. 设置投影矩阵正交投影是OpenGL中最常用的投影方式之一,它会将三维坐标系投影到二维平面上。
glortho函数可以用来设置正交投影矩阵,这里需要指定投影平面的大小和位置。
glortho函数的原型如下:void glortho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble nearVal, GLdouble farVal);其中,left、right、bottom和top表示投影平面的四个边界(也可以理解为坐标系的宽度和高度),nearVal和farVal表示投影平面的前后剪裁面。
这五个值决定了投影矩阵的大小和位置。
3. 应用投影矩阵glortho函数只是设置投影矩阵,需要将它应用到OpenGL中。
可以调用glMatrixMode和glLoadMatrix等函数来完成这个任务。
glMatrixMode函数用来指定当前矩阵堆栈操作的模式,可以将其设置为GL_PROJECTION模式,表示当前正在操作投影矩阵:glMatrixMode(GL_PROJECTION);glLoadIdentity函数用来将当前矩阵堆栈中的矩阵重置为单位矩阵:glLoadIdentity();glLoadMatrix函数用来将指定矩阵(如glortho函数返回的投影矩阵)加载到当前矩阵堆栈的顶部:glLoadMatrixf(projectionMatrix);4. 绘制图形设置好投影矩阵之后,可以通过OpenGL的各种绘图函数来绘制图形了。
gluLookAt理解
1,在OPENGL中,视图变换是指保持模型坐标不变情况下,从不同的方位观察模型,常用的函数为glLookAt。
2,在OPENGL中,如果想要移动、缩放、旋转模型,则使用模型变换。
模型变换使用的函数有:glTranslatef 平移glRotatef 旋转glScalef 缩放3,glLoadIdentity是一个特殊,它既将模型世界坐标恢复,又将视野也恢复到(0,0,0),朝向是-z,方向向上下面的一段摘自百度百科:视点转换函数原型void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdoublecenterx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);该函数定义一个视图矩阵,并与当前矩阵相乘。
第一组eyex, eyey,eyez 相机在世界坐标的位置第二组centerx,centery,centerz 相机镜头对准的物体在世界坐标的位置第三组upx,upy,upz 相机向上的方向在世界坐标中的方向你把相机想象成为你自己的脑袋:第一组数据就是脑袋的位置第二组数据就是眼睛看的物体的位置第三组就是头顶朝向的方向(因为你可以歪着头看同一个物体)。
[cpp]view plaincopy1.#include "stdafx.h"2.#include <GL/glut.h>3.#include <stdlib.h>4.5.void init(void)6.{7. glClearColor (0.0, 0.0, 0.0, 0.0); //背景黑色8.}9.10.void display(void)11.{12. glClear (GL_COLOR_BUFFER_BIT);13. glColor3f (1.0, 1.0, 1.0); //画笔白色14.15. glLoadIdentity(); //加载单位矩阵16.17. gluLookAt(0.0,0.0,5.0, 0.0,0.0,0.0, 0.0,1.0,0.0);18. glutWireTeapot(2);19. glutSwapBuffers();20.}21.22.void reshape (int w, int h)23.{24. glViewport (0, 0, (GLsizei) w, (GLsizei) h);25. glMatrixMode (GL_PROJECTION);26. glLoadIdentity ();27. gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);28. glMatrixMode(GL_MODELVIEW);29. glLoadIdentity();30. gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);31.}32.int main(int argc, char** argv)33.{34. glutInit(&argc, argv);35. glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);36. glutInitWindowSize (500, 500);37. glutInitWindowPosition (100, 100);38. glutCreateWindow (argv[0]);39. init ();40. glutDisplayFunc(display);41. glutReshapeFunc(reshape);42. glutMainLoop();43.return 0;44.}一、上面的display()函数中:gluLookAt(0.0,0.0,5.0, 0.0,0.0,0.0, 0.0,1.0,0.0); 相当于我们的脑袋位置在(0.0,0.0,5.0)处,眼睛望向(0.0,0.0,0.0),即原点。
glreadpixels用法
glreadpixels用法摘要:1.GLReadPixels 简介2.GLReadPixels 用法2.1 初始化2.2 读取像素数据2.3 应用像素数据正文:【GLReadPixels 简介】GLReadPixels 是OpenGL 中的一个函数,用于从帧缓冲区读取像素数据。
在计算机图形学中,帧缓冲区是一个存储屏幕上显示图像的缓冲区。
GLReadPixels 函数可以用来读取这些像素数据,并将其应用到纹理、渲染到屏幕或其他操作。
【GLReadPixels 用法】GLReadPixels 函数的使用主要包括三个步骤:初始化、读取像素数据和应用像素数据。
【2.1 初始化】在使用GLReadPixels 之前,首先需要进行初始化。
这包括以下几个步骤:1.创建一个GLuint 纹理:使用glGenTextures 函数创建一个纹理ID。
2.绑定纹理:使用glBindTexture 函数将纹理ID 绑定到指定的纹理单元。
3.设置纹理参数:使用glTexParameteri 函数设置纹理的参数,例如纹理宽度、纹理高度等。
4.初始化帧缓冲区:使用glGenFramebuffers 函数创建一个帧缓冲区ID,然后使用glBindFramebuffer 函数将帧缓冲区ID 绑定到默认的帧缓冲区。
5.设置帧缓冲区参数:使用glFramebufferParameteri 函数设置帧缓冲区的参数,例如帧缓冲区宽度、帧缓冲区高度等。
【2.2 读取像素数据】完成初始化后,可以使用GLReadPixels 函数读取像素数据。
其函数原型如下:```GLvoid glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *data);```各参数的含义如下:- x, y:指定读取的像素的左上角坐标。
OpenGL库函数大全
1.OpenGL核心库核心库包含有115个函数,函数名的前缀为gl。
这部分函数用于常规的、核心的图形处理。
此函数由gl.dll来负责解释执行。
由于许多函数可以接收不同数以下几类。
据类型的参数,因此派生出来的函数原形多达300多个。
核心库中的函数主要可以分为以下几类函数:(1)绘制基本几何图元的函数。
如绘制图元的函数glBegain()、glEnd()、glNormal*()、glVertex*()。
(2)矩阵操作、几何变换和投影变换的函数。
如矩阵入栈函数glPushMatrix()、矩阵出栈函数glPopMatrix()、装载矩阵函数glLoadMatrix()、矩阵相乘函数glMultMatrix(),当前矩阵函数glMatrixMode()和矩阵标准化函数glLoadIdentity(),几何变换函数glTranslate*()、glRotate*()和glScale*(),投影变换函数glOrtho()、glFrustum()和视口变换函数glViewport()等等。
(3)颜色、光照和材质的函数。
如设置颜色模式函数glColor*()、glIndex*(),设置光照效果的函数glLight*() 、glLightModel*()和设置材质效果函数glMaterial()等等。
(4)显示列表函数、主要有创建、结束、生成、删除和调用显示列表的函数glNewList()、glEndList()、glGenLists()、glCallList()和glDeleteLists()。
(5)纹理映射函数,主要有一维纹理函数glTexImage1D()、二维纹理函数glTexImage2D()、设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、glTexEnv*()和glTetCoord*()等。
(6)特殊效果函数。
融合函数glBlendFunc()、反走样函数glHint()和雾化效果glFog*()。
glgetintegerv函数
glgetintegerv函数OpenGL是一种在计算机图形领域广泛使用的开放标准API。
在OpenGL程序中,glGetIntegerv函数是一种十分常用的函数,它用于获取OpenGL中的各种信息。
下面将从几个方面为大家阐述glGetIntegerv函数。
1. glgetIntegerv函数的基本概念glGetIntegerv函数是OpenGL的一个函数,它用于获取整型变量的值,例如视口的大小、当前绑定纹理对象的名称、当前激活的纹理单元等。
该函数的原型定义如下:void glGetIntegerv(GLenum pname, GLint *params);其中,pname参数用于指定要查询的参数名,params参数则用于返回该参数的值。
2. glGetIntegerv函数的使用方法glGetIntegerv函数使用起来非常简单,只需要在程序中调用该函数并传入需要查询的参数即可。
例如,如果想要查询窗口的尺寸,可以使用以下代码:int viewport[4];glGetIntegerv(GL_VIEWPORT, viewport);其中,viewport数组用于存储窗口的尺寸信息。
调用函数后,OpenGL会将当前窗口的尺寸信息存储到viewport数组中,从而方便程序进行下一步操作。
3. glGetIntegerv函数的常见参数glGetIntegerv函数可以查询多种参数,以下列举了一些常见的参数及其作用:(1)GL_VIEWPORT:查询当前窗口的尺寸信息。
(2)GL_ARRAY_BUFFER_BINDING:查询当前绑定的顶点缓冲区对象的名称。
(3)GL_ELEMENT_ARRAY_BUFFER_BINDING:查询当前绑定的索引缓冲区对象的名称。
(4)GL_ACTIVE_TEXTURE:查询当前激活的纹理单元编号。
(5)GL_TEXTURE_BINDING_2D:查询当前绑定的纹理对象的名称。
glsl log函数
glsl log函数
GLSL(OpenGL着色器语言)中的log函数是一个用于计算自然对数的函数。
它的作用是返回指定数的自然对数,即以e为底的对数。
log函数的原型为:
float log(float x)。
vec2 log(vec2 x)。
vec3 log(vec3 x)。
vec4 log(vec4 x)。
这意味着log函数可以接受一个标量(float)、一个二维向量(vec2)、一个三维向量(vec3)或者一个四维向量(vec4)作为参数,并返回相应的结果。
当参数为标量时,log函数返回该标量的自然对数;当参数为向量时,log函数分别对向量的每个分量计算自然对数。
需要注意的是,log函数的参数x必须大于0,否则将产生未定
义的结果。
在实际应用中,通常会在使用log函数前进行参数的有
效性检查,以确保不会出现无效的输入。
在GLSL中,log函数可以用于各种数学计算和图形处理任务中,例如在着色器中实现光照模型、颜色处理、纹理映射等方面。
通过
log函数,可以方便地进行对数运算,从而实现更加复杂和丰富的
图形效果。
总之,GLSL中的log函数是一个用于计算自然对数的函数,可
以接受标量或向量作为参数,并返回相应的自然对数值。
在实际应
用中,需要注意参数的有效性,以避免产生未定义的结果。
OpenGL函数学习
1.glClear函数原型:void glClear(GLbitfield mask);参数说明:GLbitfield:可以使用| 运算符组合不同的缓冲标志位,表明需要清除的缓冲,例如glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)表示要清除颜色缓冲以及深度缓冲,可以使用以下标志位GL_COLOR_BUFFER_BIT: 当前可写的颜色缓冲GL_DEPTH_BUFFER_BIT: 深度缓冲GL_ACCUM_BUFFER_BIT: 累积缓冲GL_STENCIL_BUFFER_BIT: 模板缓冲函数说明:glClear()函数的作用是用当前缓冲区清除值,也就是glClearColor或者glClearDepth、glClearIndex、glClearStencil、glClearAccum等函数所指定的值来清除指定的缓冲区,也可以使用glDrawBuffer一次清除多个颜色缓存。
比如:glClearColor(0.0,0.0,0.0,0.0);glClear(GL_COLOR_BUFFER_BIT);第一条语句表示清除颜色设为黑色,第二条语句表示实际完成了把整个窗口清除为黑色的任务,glClear()的唯一参数表示需要被清除的缓冲区。
像素检验、裁剪检验、抖动和缓存的写屏蔽都会影响glClear的操作,其中,裁剪范围限制了清除的区域,而glClear命令还会忽略alpha函数、融合函数、逻辑操作、模板、纹理映射和z缓存;2.glClearColor函数原型:void glClearColor(GLclampf red,GLclampf green,Glclampfblue,GLclampf alpha);功能:为颜色缓存区指定确定的值3.glColor指定一个指针,指向一个数组,包含红色,绿色,蓝色,和(有时)的alpha值。
说明:glColor设置一个新的四RGBA颜色值。
glblitframebuffer用法
glblitframebuffer用法glBlitFramebuffer函数是OpenGL中用于在不同帧缓冲区之间复制数据的函数。
该函数可以用来实现一些特定的渲染效果或者实现后期处理效果。
在使用该函数时需要注意以下几个方面:1. glBlitFramebuffer函数的原型为:void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);2. 参数说明:- srcX0, srcY0, srcX1, srcY1:源帧缓冲区的区域左下角和右上角的坐标。
- dstX0, dstY0, dstX1, dstY1:目标帧缓冲区的区域左下角和右上角的坐标。
- mask:指定要拷贝的缓冲区,可以是GL_COLOR_BUFFER_BIT、GL_DEPTH_BUFFER_BIT、GL_STENCIL_BUFFER_BIT或它们的组合。
- filter:指定在拷贝过程中的缩放方式,可以是GL_NEAREST或GL_LINEAR。
3. 使用示例:glBlitFramebuffer(0, 0, srcWidth, srcHeight, 0, 0, dstWidth, dstHeight,GL_COLOR_BUFFER_BIT, GL_NEAREST);上述代码表示将源帧缓冲区中的颜色缓冲区拷贝到目标帧缓冲区中,并且采用最近邻插值方式进行缩放。
4. 注意事项:- glBlitFramebuffer函数只能在OpenGL 3.0及以上版本中使用。
- 在进行帧缓冲区拷贝时,需要确保源和目标帧缓冲区的维度一致。
- 在进行颜色缓冲区的拷贝时,源和目标帧缓冲区的像素格式需要一致,否则可能会导致拷贝失败或者出现意外效果。
glcolor3f函数的作用
glcolor3f函数的作用glColor3f函数是OpenGL中的一个颜色设置函数,它用于设置绘制图形时的颜色值。
在OpenGL中,所有的图形都是以多边形的形式来呈现的,而glColor3f 函数就是用来为这些多边形设置颜色的。
首先,我们来看一下glColor3f函数的详细定义。
该函数的原型如下:void glColor3f(GLfloat red, GLfloat green, GLfloat blue);其中,red、green和blue是三个表示RGB颜色分量的浮点数。
它们的取值范围是0.0到1.0,其中0.0表示最小亮度或没有颜色,而1.0表示最高亮度或最大颜色。
这个函数的作用是将当前的绘制颜色设置为red、green和blue所指定的颜色,之后再进行绘制操作时,这个颜色就会被应用到所绘制的图形上。
在OpenGL中,需要注意的是,glColor函数的设置是有状态的。
也就是说,一旦设置了绘制颜色,它将一直保持有效,直到再次调用glColor函数来改变绘制颜色。
接下来,我们来了解一下glColor3f函数的使用方法。
首先,为了使用glColor3f函数,我们需要先调用glBegin函数来开始绘制一个基本图形(如点、线、三角形等)。
然后,在调用glVertex系列函数绘制具体的图形顶点之前,我们使用glColor3f函数来设置绘制颜色。
例如,我们想要绘制一个红色的三角形,可以这样设置绘制颜色:glColor3f(1.0f, 0.0f, 0.0f);接着,使用glVertex3f函数来指定三角形的三个顶点:glVertex3f(x1, y1, z1);glVertex3f(x2, y2, z2);glVertex3f(x3, y3, z3);在这里,x1、y1、z1表示第一个顶点的坐标,x2、y2、z2表示第二个顶点的坐标,以此类推。
最后,使用glEnd函数来结束图形的绘制:glEnd();这样,我们就成功地绘制了一个红色的三角形。
第3章 OpenGL的基本图元
第3章OpenGL的基本图元3.1 OpenGL编程概述3.1.1 OpenGL的相关库(1)相关库简介① OpenGL核心库(GL)。
●包含OpenGL最基本的命令函数,提供了建立几何模型、进行坐标变换、产生光照效果、进行纹理映射和雾化等操作。
●在各种平台上的使用完全相同,保证了OpenGL的可移植性。
●函数名的前缀为gl。
② OpenGL实用库(GLU)。
●利用低层OpenGL命令编写的一些执行特殊任务的例程,如纹理映射、坐标变换、NURBS曲线曲面等。
●函数名的前缀是glu。
③ OpenGL的X-Window系统扩充(GLX)。
●在使用X-Window的机器上,提供一种建立OpenGL现场,并把它与可绘窗口关联起来的方法。
●函数名的前缀为glx。
④ OpenGL的Windows系统扩充(WGL)。
●在使用Windows的机器上,提供一种建立OpenGL现场,并把它与可绘窗口关联起来的方法。
●函数名的前缀为wgl。
⑤ OpenGL Programming Guide辅助库(AUX)。
●建立了一系列简单而又较完整的编程例子,例如初始化窗口、监控输入,以及绘制一些三维几何体等函数。
●函数名的前缀为aux。
⑥ OpenGL实用函数工具包(GLUT)。
●主要包括窗口操作函数、回调函数、创建复杂三维物体函数、菜单函数、程序运行函数等。
●函数名的前缀为glut。
(2)相关库的存在形式●在Windows中,相关的库以动态链接库的形式存在。
●在Visual C++ 6中,opengl32.lib、glu32.lib、glaux.lib、glut.lib分别表示OpenGL库、实用库、辅助库和实用函数工具包,相应的头文件是gl.h、glu.h、glaux.h和glut.h。
3.1.2 用Visual C++ 6开发OpenGL应用(1)使用方法OpenGL和GLU是Windows的标准组成部分,opengl32.lib、glu32.lib、glaux.lib已经集成到了Visual C++ 6中。
glgenobject参数
glgenobject参数glGenObject参数是OpenGL中的一个函数,它用于生成一个或多个OpenGL对象的名称。
这些对象可以是缓冲区对象、纹理对象、帧缓冲对象、渲染缓冲对象等。
在OpenGL中,对象名称是一个无符号整数,它唯一标识了一个对象。
glGenObject函数的原型如下:void glGenObject(int n, uint *objects);其中,n表示要生成的对象数量,objects是一个指向无符号整数数组的指针,用于存储生成的对象名称。
glGenObject函数的作用是生成一个或多个OpenGL对象的名称。
这些对象名称可以用于创建对象,并在需要时进行绑定、修改、查询等操作。
例如,可以使用glGenObject函数生成一个纹理对象的名称,然后使用glBindTexture函数将该纹理对象绑定到当前的纹理单元上,再使用glTexImage2D函数将图像数据加载到该纹理对象中。
glGenObject函数的返回值是void,因此无法直接获取生成的对象名称。
但是,可以通过objects参数获取生成的对象名称。
例如,如果要生成一个纹理对象的名称,可以定义一个无符号整数变量,然后将其地址传递给glGenObject函数,如下所示:uint texture;glGenObject(1, &texture);这样,glGenObject函数就会生成一个纹理对象的名称,并将其存储在texture变量中。
需要注意的是,glGenObject函数只是生成对象名称,而不会创建对象。
要创建对象,需要使用相应的函数,例如glGenBuffers、glGenTextures等。
此外,生成的对象名称是唯一的,不能重复使用。
如果需要删除对象,可以使用glDeleteObject函数将其从OpenGL 中删除。
glGenObject函数是OpenGL中非常重要的一个函数,它可以生成各种类型的OpenGL对象的名称,为后续的对象创建、绑定、修改、查询等操作提供了便利。
OpenGL分格化渲染凹多边形
OpenGL分格化渲染凹多边形虽然在OpenGL中可以使用glBegin(GL_POLYGON)来画一个多边形,但是它只能实现简单的凸多边形。
对于一些复杂的多边形,比如凹多边形,或者有实心有空心的多边形,OpenGL的glBegin(GL_POLYGON)就不能满足需求了。
通常可以采用一种叫做"分格化"的方法来画复杂的多边形。
要用分格化的方法画多边形,步骤如下:1. gluNewTess(); //创建一个新的分格化对象2. gluTessCallback(); //注册回调函数,完成分格化的一些操作,照着写就行了。
3. gluTessProperty(); //可有可无的,设置一些分格化的属性值4. gluTessBeginPolygon(); //开始画多边形draw polygon...//在这里画多边形,一个一个点画就可以,最后一个点会和第一个点自动连接起来gluTessEdnPolygon(); //结束画多边形5. gluDeleteTess(); //删除分格化对象在后面会附上一段分格化的代码,虽然很简单,但是按照书上的给的例子在c++中编程,gluTessCallback()函数会报错。
它的函数原型是:void gluTessCallback(GLUtesselator * tessobj, GLenum type, void(*fn)());在C语言中使用gluTessCallback()是可以像下面这样写的。
gluTessCallback(tobj, GLU_TESS_VERTEX, glVertex3dv);gluTessCallback(tobj, GLU_TESS_BEGIN, beginCallback);gluTessCallback(tobj, GLU_TESS_END, endCallback);gluTessCallback(tobj, GLU_TESS_ERROR, errorCallback);但是换到c++里面,就会出现下面的错误。
glreadpixels 用法
glreadpixels 用法glReadPixels函数是OpenGL中一个非常重要的函数,它用于将指定的图形缓冲区的像素数据读取到内存中的一个像素数组中。
通过glReadPixels,我们可以获取OpenGL渲染的图像数据,并用它进行后续的处理和操作。
glReadPixels的函数原型如下:```void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *data);```参数说明:- x和y:指定要读取的矩形区域的起始坐标。
- width和height:指定要读取的矩形区域的宽度和高度。
- format:指定读取像素数据的格式,常用的有GL_RGB,GL_RGBA等。
- type:指定读取像素数据的数据类型,常用的有GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT等。
- data:指定用于存储读取像素数据的数组。
glReadPixels函数的用法如下:1. 首先,需要创建一个用于存储像素数据的数组。
数组的大小应该足够大,以容纳读取的像素数据。
如下所示:```GLubyte *pixels = new GLubyte[width * height * 4];```这里创建了一个大小为width * height * 4的无符号字节类型数组,每个像素包含RGBA四个分量。
2. 然后,我们需要将OpenGL的渲染结果绑定到指定的帧缓冲区。
一般情况下,我们绑定默认帧缓冲区,即将0绑定到GL_FRAMEBUFFER。
如下所示:```glBindFramebuffer(GL_FRAMEBUFFER, 0);```3. 接下来,我们调用glReadPixels函数进行像素数据的读取。
如下所示:```glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels);```这里读取了从原点开始,宽度为width,高度为height的矩形区域,读取的像素格式为RGBA,数据类型为无符号字节。
OpenGL功能简介
状态变量通过函数 glEnable() 和 glDisable() 进行激活或取消的设置
OpenGL状态机制(2/2)
每一个状态变量都有系统默认的缺省值 状态变量的当前值可以通过一系列函数查询
顶点数据 Vertex data
OpenGL渲染流水线(7/20)
求值器
参数化的曲面曲线(如贝塞尔,NURBS曲面曲线) 并不直接给出顶点,而是给出一系列控制点及其生成 曲面曲线的函数 求值器的功能就是,通过控制点和生成函数,得到实 际使用的顶点数据 对于非参数化曲面曲线,这一步是被忽略的
顶点数据 Vertex data 求值器 Evaluators
对每个顶点的操作和图元装配
对象坐标 Object 人眼坐标 Eye 裁剪 Clip 归一化 Normalize 窗口坐标 Window
顶点 Vertex
模型视图矩阵 Modelview matrix
投影矩阵 Project matrix
透视除法 Perspective division
视区变换 Viewport transform
OpenGL基本功能(5/11)
矩阵变换
无论多复杂的图形都是由基本图元组成并经 过一系列变换来实现的 OpenGL提供四种基本变换:平移、旋转、按 比例缩放、镜像 OpenGL提供两种投影变换:平行投影(正射 投影)、透视投影
OpenGL基本功能(6/11)
颜色管理
OpenGL提供了两种颜色模式:RGBA模式,颜色索 引模式(Color index) RGBA模式为每个像素点指定颜色,可提供丰富多彩 的色彩效果,其中A是混合因子,用于各种特效处理 对于显示能力不足的硬件,可采用颜色索引模式,系 统提供一个颜色表,通常有256或4096种颜色,各像 素点通过索引颜色表项得到颜色值
计算机图形学OpenGL版实验5-8
实验5 OpenGL模型视图变换一、实验目的:理解掌握OpenGL程序的模型视图变换。
二、实验内容:(1)阅读实验原理,运行示范实验代码,理解掌握OpenGL程序的模型视图变换;(2)根据示范代码,尝试完成实验作业;三、实验原理:在代码中,视图变换必须出现在模型变换之前,但可以在绘图之前的任何时候执行投影变换和视口变换。
1.display()程序中绘图函数潜在的重复性强调了:在指定的视图变换之前,应该使用glLoadIdentity()函数把当前矩阵设置为单位矩阵。
2.在载入单位矩阵之后,使用gluLookAt()函数指定视图变换。
如果程序没有调用gluLookAt(),那么照相机会设定为一个默认的位置和方向。
在默认的情况下,照相机位于原点,指向Z轴负方向,朝上向量为(0,1,0)。
3.一般而言,display()函数包括:视图变换 + 模型变换 + 绘制图形的函数(如glutWireCube())。
display()会在窗口被移动或者原来先遮住这个窗口的东西被一开时,被重复调用,并经过适当变换,保证绘制的图形是按照希望的方式进行绘制。
4.在调用glFrustum()设置投影变换之前,在reshape()函数中有一些准备工作:视口变换 + 投影变换 + 模型视图变换。
由于投影变换,视口变换共同决定了场景是如何映射到计算机的屏幕上的,而且它们都与屏幕的宽度,高度密切相关,因此应该放在reshape()中。
reshape()会在窗口初次创建,移动或改变时被调用。
OpenGL中矩阵坐标之间的关系:物理坐标*模型视图矩阵*投影矩阵*透视除法*规范化设备坐标——〉窗口坐标(1)视图变换函数gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0,)设置照相机的位置。
把照相机放在(0,0,5),镜头瞄准(0,0,0),朝上向量定为(0,1,0)朝上向量为照相机指定了一个唯一的方向。
glsl clamp函数
glsl clamp函数GLSL是OpenGL Shading Language的简称,是一种面向图形处理器的高级着色语言。
GLSL的clamp函数是其中一个非常重要的函数。
GLSL clamp函数是一个用于截取范围的函数,它可以将任意数据类型的数据限制在一个指定的范围内。
该函数的原型如下:```T clamp(T x, T minVal, T maxVal)```其中,T代表函数需要对应的数据类型(如float、int、vec3等)。
使用该函数时,我们需要指定三个参数:待截取的值x,截取的最小值minVal和截取的最大值maxVal。
这个函数返回的结果是截取后的值,即如果x小于最小值minVal,返回minVal;如果x大于最大值maxVal,返回maxVal;否则返回x。
该函数的语法简单易懂,但却非常实用,经常被用于图形处理器上对纹理、颜色等数据进行限制。
在颜色的处理中,如对图像亮度/对比度的处理,可以使用clamp函数限制颜色在一定的范围内。
以下是使用clamp函数对颜色进行亮度限制的示例代码:```// 限制红色通道亮度在0.2~1.0之间vec4 color = texture2D(sampler, vTexCoord);color.r = clamp(color.r, 0.2, 1.0);```在该代码中,使用了texture2D函数将纹理颜色读入,然后将红色通道的亮度值限制在了0.2~1.0之间,最终的结果就是将颜色的亮度范围限制在了一定的范围内。
总的来说,GLSL clamp函数是一种非常实用的函数,它可以帮助我们对图形处理中的数据进行限制,使得处理结果更加准确有效。
在实际应用中,我们可以灵活运用这个函数来满足不同的需求。
OpenGL之曲线和曲面
计算机图形学中,所有的光滑曲线、曲面都采用线段或三角形逼近来模拟,但为了精确地表现曲线,通常需要成千上万个线段或三角形来逼近,这种方法对于计算机的硬件资源有相当高的要求。
然而,许多有用的曲线、曲面在数学上只需要用少数几个参数(如控制点等)来描述。
这种方法所需要的存储空间比线段、三角形逼近的方法来所需要的空间要小得多,并且控制点方法描述的曲线、曲面比线段、三角形逼近的曲线、曲面更精确。
为了说明如何在Open GL中绘制复杂曲线和曲面,我们对上述两类比方法都进行了介绍。
下面我们先来介绍有关基础知识,然后再看是如何实现的吧。
一、曲线的绘制OpenGL通过一种求值器的机制来产生曲线和曲面,该机制非常灵活,可以生成任意角度的多项式曲线,并可以将其他类型的多边形曲线和曲面转换成贝塞尔曲线和曲面。
这些求值器能在任何度的曲线及曲面上计算指定数目的点。
随后,OpenGL利用曲线和曲面上的点生成标准O penGL图元,例如与曲线或曲面近似的线段和多边形。
由于可让Op enGL计算在曲线上所需的任意数量的点,因此可以达到应用所需的精度。
对于曲线,OpenGL中使用gl Map1*()函数来创建一维求值器,该函数原型为:表一、参数targ et的取值表使用求值器定义曲线后,必须要启动求值器,才能进行下一步的绘制工作。
启动函数仍是glEna ble(),其中参数与g lMap1*()的第一个参数一致。
同样,关闭函数为g lDisa ble(),参数也一样。
一旦启动一个或多个求值器,我们就可以构造近似曲线了。
最简单的方法是通过调用计算坐标函数glEv alcoo rd1*()替换所有对函数glVe rtex*()的调用。
glvertexattribpointer示例 -回复
glvertexattribpointer示例-回复"glVertexAttribPointer示例"文章OpenGL是一个功能强大的图形库,用于创建高性能实时图形应用程序。
其中一个重要的功能是顶点着色器,它负责处理顶点信息以生成渲染画面。
为了有效地处理顶点数据,OpenGL提供了一个函数叫做glVertexAttribPointer,它是设置顶点属性指针的关键。
在本文中,我们将详细讨论glVertexAttribPointer函数的用法和示例。
我们会一步一步地回答以下问题:什么是glVertexAttribPointer?如何使用它?为什么要使用它?以及一些实际示例。
Step 1: 什么是glVertexAttribPointer?glVertexAttribPointer函数用于指定顶点属性的数据格式和位置。
它告诉OpenGL如何从顶点缓冲区(VBO)中解析顶点数据。
它的函数原型如下:void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)参数解释如下:- index:指定要设置的顶点属性的索引。
- size:指定顶点属性的大小,可以是1、2、3或4。
- type:指定顶点属性的数据类型,例如GL_FLOAT。
- normalized:指定是否要将非浮点数据归一化到固定的范围内。
- stride:指定顶点属性中每个连续顶点之间的偏移量。
- pointer:指定顶点属性在缓冲区中的起始位置。
Step 2: 如何使用glVertexAttribPointer?使用glVertexAttribPointer非常简单。
首先,我们需要在顶点数据中启用顶点属性数组(如位置、颜色或纹理坐标),然后再告诉OpenGL如何解析这些数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OpenGL函数原型glAccum 操作累加缓冲区glAddSwapHintRectWIN 定义一组被SwapBuffers拷贝的三角形glAlphaFunc允许设置alpha检测功能glAreTexturesResident 决定特定的纹理对象是否常驻在纹理内存中glArrayElement 定义一个被用于顶点渲染的数组成分glBegin,glEnd 定义一个或一组原始的顶点glBindTexture 允许建立一个绑定到目标纹理的有名称的纹理glBitmap 绘制一个位图glBlendFunc 特殊的像素算法glCallList 执行一个显示列表glCallLists 执行一列显示列表glClear 用当前值清除缓冲区GlClearAccum 为累加缓冲区指定用于清除的值glClearColor 为色彩缓冲区指定用于清除的值glClearDepth 为深度缓冲区指定用于清除的值glClearStencil 为模板缓冲区指定用于清除的值glClipPlane 定义被裁剪的一个平面几何体glColor 设置当前色彩glColorMask 允许或不允许写色彩组件帧缓冲区glColorMaterial 使一个材质色彩指向当前的色彩glColorPointer 定义一列色彩glColorTableEXT 定义目的一个调色板纹理的调色板的格式和尺寸glColorSubTableEXT 定义目的纹理的调色板的一部分被替换glCopyPixels 拷贝帧缓冲区里的像素glCopyTexImage1D 将像素从帧缓冲区拷贝到一个单空间纹理图象中glCopyTexImage2D 将像素从帧缓冲区拷贝到一个双空间纹理图象中glCopyTexSubImage1D 从帧缓冲区拷贝一个单空间纹理的子图象glCopyTexSubImage2D 从帧缓冲区拷贝一个双空间纹理的子图象glCullFace 定义前面或后面是否能被精选glDeleteLists 删除相邻一组显示列表glDeleteTextures 删除命名的纹理glDepthFunc 定义用于深度缓冲区对照的数据glDepthMask 允许或不允许写入深度缓冲区glDepthRange 定义z值从标准的设备坐标映射到窗口坐标glDrawArrays 定义渲染多个图元glDrawBuffer 定义选择哪个色彩缓冲区被绘制glDrawElements 渲染数组数据中的图元glDrawPixels 将一组像素写入帧缓冲区glEdgeFlag 定义一个边缘标志数组glEdgeFlagPointer 定义一个边缘标志数组glEnable, glDisable 打开或关闭OpenGL的特殊功能glEnableClientState,glDisableClientState 分别打开或关闭数组glEvalCoord 求解一维和二维贴图glEvalMesh1,glEvalMesh2 求解一维和二维点或线的网格glEvalPoint1,glEvalPoint2 生成及求解一个网格中的单点glFeedbackBuffer 控制反馈模式glFinish 等待直到OpenGL执行结束glFlush 在有限的时间里强制OpenGL的执行glFogf,glFogi,glFogfv,glFogiv 定义雾参数glFrontFace 定义多边形的前面和背面glFrustum 当前矩阵乘上透视矩阵glGenLists 生成一组空的连续的显示列表glGenTextures 生成纹理名称glGetBooleanv,glGetDoublev,glGetFloatv,glG etIntegerv 返回值或所选参数值glGetClipPlane 返回特定裁减面的系数glGetColorTableEXT 从当前目标纹理调色板得到颜色表数据glGetColorTableParameterfvEXT,glGetColorT ableParameterivEXT 从颜色表中得到调色板参数glGetError 返回错误消息glGetLightfv,glGetLightiv 返回光源参数值glGetMapdv,glGetMapfv,glGetMapiv 返回求值程序参数glGetMaterialfv,glGetMaterialiv 返回材质参数glGetPixelMapfv,glGetpixelMapuiv,glGetpixel Mapusv 返回特定的像素图glGetPointerv 返回顶点数据数组的地址glGetPolygonStipple 返回多边形的点图案glGetString 返回描述当前OpenGl连接的字符串glGetTexEnvfv 返回纹理环境参数glGetTexGendv,glGetTexGenfv,glGetTexGeni v 返回纹理坐标生成参数glGetTexImage 返回一个纹理图象glGetTexLevelParameterfv,glGetTexLevelPara meteriv 返回特定的纹理参数的细节级别glGetTexParameterfv,glGetTexParameteriv 返回纹理参数值glHint 定义实现特殊的线索glIndex 建立当前的色彩索引glIndexMask 控制写色彩索引缓冲区里的单独位GlIndexPointer 定义一个颜色索引数组glInitName 初始化名字堆栈glInterleavedArrays 同时定义和允许几个在一个大的数组集合里的交替数组glIsEnabled 定义性能是否被允许glIsList 检测显示列表的存在glIsTexture 确定一个名字对应一个纹理glLightf,glLighti,glLightfv,glLightiv 设置光源参数glLightModelf,glLightModeli,glLightModelfv, glLightModeliv 设置光线模型参数glLineStipple 设定线点绘图案glLineWidth 设定光栅线段的宽glListBase 为glcallList设定显示列表的基础glLoadIdentity 用恒等矩阵替换当前矩阵glLoadMatrixd,glLoadMatrif 用一个任意矩阵替换当前矩阵glLoadName 将一个名字调入名字堆栈glLogicOp 为色彩索引渲染定义一个逻辑像素操作glMap1d,glMap1f 定义一个一维求值程序glMap2d,glMap2f 定义一个二维求值程序glMapGrid1d,glMapGrid1f,glMapgrid2d,glMa pGrid2f 定义一个一维或二维网格glMaterialf,glMateriali,glMateriafv,glMateriali v 为光照模型定义材质参数glMatrixMode 定义哪一个矩阵是当前矩阵glMultMatrixd,glMultMatrixf 用当前矩阵与任意矩阵相乘glNewList,glEndList 创建或替换一个显示列表glNormal 设定当前顶点法向glNormalPointer 设定一个法向数组glOrtho 用垂直矩阵与当前矩阵相乘glPassThrough 在反馈缓冲区做记号glPixelMapfv,glPixelMapuiv,glPixelMapusv 设定像素交换图glPixelStoref,glpixelStorei 设定像素存储模式glPixelTransferf,glPixelTransferi 设定像素存储模式glPixelZoom 设定像素缩放因数glPointSize 设定光栅点的直径glPolygonMode 选择一个多边形的光栅模式glPolygonOffset 设定OpenGL用于计算深度值的比例和单元glPolygonStipple 设定多边形填充图案glPrioritizeTextures 设定纹理固定的优先级glPushAttrib,glPopAttrib 属性堆栈的压入和弹出操作glPushClientAttrib,glPopClientAttrib 在客户属性堆栈存储和恢复客户状态值glPushmatrix,glPopMatrix 矩阵堆栈的压入和弹出操作glPushName,glPopName 名字堆栈的压入和弹出操作glRasterPos 定义像素操作的光栅位置glreadBuffer 为像素选择一个源色彩缓冲区glReadPixels 从帧缓冲区读取一组数据glRectd,glRectf,glRecti,glRects,glRectdv,glRe ctfv,glRectiv,glRectsv 绘制一个三角形glRenderMode定义光栅模式glRotated,glRotatef 将旋转矩阵与当前矩阵相乘glScaled,glScalef 将一般的比例矩阵与当前矩阵相乘glScissor 定义裁减框glSelectBuffer 为选择模式值建立一个缓冲区glShadeModel 选择平直或平滑着色glStencilFunc 为模板测试设置功能和参照值glStencilMask 控制在模板面写单独的位glStencilOp 设置激活模式测试glTexCoord 设置当前纹理坐标glTexCoordPointer 定义一个纹理坐标数组glTexEnvf,glTexEnvi,glTexEnvfv,glTexEnviv 设定纹理坐标环境参数glTexGend,glTexgenf,glTexGendv,glTexGenfv ,glTexGeniv 控制纹理坐标的生成glTexImage1D 定义一个一维的纹理图象glTexImage2D 定义一个二维的纹理图glTexParameterf,glTexParameteri,glTexParam eterfv,glTexParameteriv 设置纹理参数glTexSubImage1D 定义一个存在的一维纹理图像的一部分,但不能定义新的纹理glTexSubImage2D 定义一个存在的二维纹理图像的一部分,但不能定义新的纹理glTranslated,glTranslatef 将变换矩阵与当前矩阵相乘glVertex 定义一个顶点glVertexPointer 设定一个顶点数据数组glViewport 设置视窗[OpenGL应用函数库]gluBeginCurve,gluEndCurve 定义一条不一至的有理的NURBS曲线gluBeginPolygon,gluEndPolygon 定义一个非凸多边形gluBeginSurface,gluEndSurface 定义一个NURBS曲线gluBeginTrim,gluEndTrim 定义一个NURBS 整理循环gluBuild1Dmipmaps 建立一维多重映射gluBuild2Dmipmaps 建立二维多重映射gluCylinder 绘制一个圆柱gluDeleteNurbsRenderer 删除一个NURBS 对象gluDeleQuadric 删除一个二次曲面对象gluDeleteTess 删除一个镶嵌对象gluDisk 绘制一个盘子gluErrorString 根据OpenGL或GLU错误代码产生错误字符串gluGetNutbsProperty 得到一个NURBS属性gluGetString 得到一个描述GLU版本号或支持GLU扩展调用的字符串gluGetTessProperty 得到一个镶嵌对象gluLoadSamplingMatrices 加载NUMRBS例子和精选矩阵gluLookAt 设定一个变换视点gluNewNurbsRenderer 创建一个NURBS对象gluNewQuadric 建立一个二次曲面对象gluNewTess 建立一个镶嵌对象gluNextContour 为其他轮廓的开始做标记gluNurbsCallback 为NURBS对象设定一个回调gluNnrbsCurve 设定一个NuRBS曲线的形状gluNurbsProperty 设定一个NURBS属性gluNurbsSurface 定义一个NURBS表面的形状gluOrtho2D 定义一个二位正交投影矩阵gluPartialDisk 绘制一个盘子的弧gluPerspective 设置一个透视投影矩阵gluPickMatrix 定义一个拾取区间gluProject 将对象坐标映射为窗口坐标gluPwlCurve 描述一个分段线性NURBS修剪曲线gluQuadricCallback 为二次曲面对象定义一个回调gluQuadricDrawStyle 为二次曲面设定合适的绘制风格gluQuadricNormals 定义二次曲面所用的法向的种类gluQuadricOrientation 定义二次曲面内部或外部方向gluQuadricTexture 定义是否带二次其面做纹理帖图gluScaleImage 将图象变换为任意尺寸gluSphere 绘制一个球体gluTessBeginContour,gluTessEndContour 划定一个边界描述gluTessBeginPolygon,gluTessEndPolygon 划定一个多边形描述gluTessCallback 为镶嵌对象定义一个回调gluTessNormal 为一个多边行形定义法向gluTessProperty 设置镶嵌对象的属性gluTessVertex 定义在一个多边形上的顶点gluUnProject 将窗口坐标映射为对象坐标补充:glNormal3f( 0.0f, 0.0f,-1.0f); // 法线背向观察者glNormal3f( 0.0f, 0.0f, 1.0f); // 法线指向观察者glNormal3f( 0.0f, 1.0f, 0.0f); // 法线向上glNormal3f( 0.0f,-1.0f, 0.0f); // 法线朝下glNormal3f( 1.0f, 0.0f, 0.0f); // 法线朝右glNormal3f(-1.0f, 0.0f, 0.0f); // 法线朝左glMatrixMode(GL_PROJECTION) 设置当前矩阵为投影矩阵glMatrixMode(GL_MODELVIEW)原型GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value);GLAPI void GLAPIENTRY glAlphaFunc(GLenum func, GLclampf ref);GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, constGLuint *textures, GLboolean *residences);GLAPI void GLAPIENTRY glArrayElement (GLint i);GLAPI void GLAPIENTRY glBegin (GLenum mode);GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture);GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloatxorig, GLfloat yorig, GLfloat xmove, GLfloatymove, const GLubyte*bitmap);GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);GLAPI void GLAPIENTRY glCallList (GLuint list);GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const GLvoid*lists);GLAPI void GLAPIENTRY glClear (GLbitfield mask);GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloatblue, GLfloat alpha);GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green,GLclampf blue, GLclampf alpha);GLAPI void GLAPIENTRY glClearDepth (GLclampd depth);GLAPI void GLAPIENTRY glClearIndex (GLfloat c);GLAPI void GLAPIENTRY glClearStencil (GLint s);GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble*equation);GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyteblue);GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v);GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdoubleblue);GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v);GLAPI void GLAPIENTRY glColor3f(GLfloat red, GLfloat green, GLfloat blue);GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v);GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue);GLAPI void GLAPIENTRY glColor3iv (const GLint *v);GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshortblue);GLAPI void GLAPIENTRY glColor3sv (const GLshort *v);GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyteblue);GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v);GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuintblue);GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v);GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green,GLushort blue);GLAPI void GLAPIENTRY glColor3usv (const GLushort *v);GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue,GLbyte alpha);GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v);GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdoubleblue, GLdouble alpha);GLAPI void GLAPIENTRY glColor4dv(const GLdouble *v);GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloatblue, GLfloat alpha);GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v);GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue,GLint alpha);GLAPI void GLAPIENTRY glColor4iv (const GLint *v);GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshortblue, GLshort alpha);GLAPI void GLAPIENTRY glColor4sv (const GLshort *v);GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyteblue, GLubyte alpha);GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v);GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuintblue, GLuint alpha);GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v);GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green,GLushort blue, GLushort alpha);GLAPI void GLAPIENTRY glColor4usv (const GLushort *v);GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green,GLboolean blue, GLboolean alpha);GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode);GLAPI void GLAPIENTRY glColorPointer(GLint size, GLenum type, GLsizeistride, const GLvoid *pointer);GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width,GLsizei height, GLenum type);GLAPI void GLAPIENTRY glCopyTexImage1D (GLenum target, GLint level,GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);GLAPI void GLAPIENTRY glCopyTexImage2D (GLenum target, GLint level,GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height,GLint border);GLAPI void GLAPIENTRY glCopyTexSubImage1D (GLenum target, GLint level,GLint xoffset, GLint x, GLint y, GLsizei width);GLAPI void GLAPIENTRY glCopyTexSubImage2D (GLenum target, GLint level,GLint xoffset, GLint yoffset, GLint x, GLint y,GLsizei width, GLsizeiheight);GLAPI void GLAPIENTRY glCullFace (GLenum mode);GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range);GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint*textures);GLAPI void GLAPIENTRY glDepthFunc (GLenum func);GLAPI void GLAPIENTRY glDepthMask (GLboolean flag);GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar);GLAPI void GLAPIENTRY glDisable (GLenum cap);GLAPI void GLAPIENTRY glDisableClientState (GLenum array);GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizeicount);GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode);GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count,GLenum type, const GLvoid *indices);GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height,GLenum format, GLenum type, const GLvoid *pixels);GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag);GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const GLvoid*pointer);GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag);GLAPI void GLAPIENTRY glEnable (GLenum cap);GLAPI void GLAPIENTRY glEnableClientState (GLenum array);GLAPI void GLAPIENTRY glEnd (void);GLAPI void GLAPIENTRY glEndList (void);GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u);GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u);GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u);GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u);GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v);GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u);GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v);GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u);GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2);GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2,GLint j1, GLint j2);GLAPI void GLAPIENTRY glEvalPoint1 (GLint i);GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j);GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type,GLfloat *buffer);GLAPI void GLAPIENTRY glFinish (void); GLAPI void GLAPIENTRY glFlush (void);GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param);GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params);GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param);GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params);GLAPI void GLAPIENTRY glFrontFace (GLenum mode);GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right,GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range);GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures);GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params);GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble*equation);GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params);GLAPI GLenum GLAPIENTRY glGetError (void);GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params);GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, GLint *params);GLAPI void GLAPIENTRY glGetLightfv(GLenum light, GLenum pname, GLfloat*params);GLAPI void GLAPIENTRY glGetLightiv (GLenum light, GLenum pname, GLint*params);GLAPI void GLAPIENTRY glGetMapdv (GLenum target, GLenum query, GLdouble*v);GLAPI void GLAPIENTRY glGetMapfv (GLenum target, GLenum query, GLfloat*v);GLAPI void GLAPIENTRY glGetMapiv (GLenum target, GLenum query, GLint*v);GLAPI void GLAPIENTRY glGetMaterialfv (GLenum face, GLenum pname,GLfloat *params);GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint*params);GLAPI void GLAPIENTRY glGetPixelMapfv (GLenum map, GLfloat *values);GLAPI void GLAPIENTRY glGetPixelMapuiv (GLenum map, GLuint *values);GLAPI void GLAPIENTRY glGetPixelMapusv (GLenum map, GLushort *values);GLAPI void GLAPIENTRY glGetPointerv (GLenum pname, GLvoid* *params);GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask);GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name);GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname,GLfloat *params);GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, GLint*params);GLAPI void GLAPIENTRY glGetTexGendv (GLenum coord, GLenum pname,GLdouble *params);GLAPI void GLAPIENTRY glGetTexGenfv (GLenum coord, GLenum pname,GLfloat *params);GLAPI void GLAPIENTRY glGetTexGeniv (GLenum coord, GLenum pname, GLint*params);GLAPI void GLAPIENTRY glGetTexImage (GLenum target, GLint level, GLenumformat, GLenum type, GLvoid *pixels);GLAPI void GLAPIENTRY glGetTexLevelParameterfv (GLenum target, GLintlevel, GLenum pname, GLfloat *params);GLAPI void GLAPIENTRY glGetTexLevelParameteriv (GLenum target, GLintlevel, GLenum pname, GLint *params);GLAPI void GLAPIENTRY glGetTexParameterfv (GLenum target, GLenum pname,GLfloat *params);GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname,GLint *params);GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode);GLAPI void GLAPIENTRY glIndexMask (GLuint mask);GLAPI void GLAPIENTRY glIndexPointer(GLenum type, GLsizei stride,const GLvoid *pointer);GLAPI void GLAPIENTRY glIndexd (GLdouble c);GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c);GLAPI void GLAPIENTRY glIndexf (GLfloat c);GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c);GLAPI void GLAPIENTRY glIndexi (GLint c);GLAPI void GLAPIENTRY glIndexiv (const GLint *c);GLAPI void GLAPIENTRY glIndexs (GLshort c);GLAPI void GLAPIENTRY glIndexsv (const GLshort *c);GLAPI void GLAPIENTRY glIndexub (GLubyte c);GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c);GLAPI void GLAPIENTRY glInitNames (void);GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizeistride, const GLvoid *pointer);GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap);GLAPI GLboolean GLAPIENTRY glIsList (GLuint list);GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture);GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param);GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat*params);GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param);GLAPI void GLAPIENTRY glLightModeliv(GLenum pname, const GLint*params);GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloatparam);GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, constGLfloat *params);GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLintparam);GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, constGLint *params);GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern);GLAPI void GLAPIENTRY glLineWidth (GLfloat width);GLAPI void GLAPIENTRY glListBase (GLuint base);GLAPI void GLAPIENTRY glLoadIdentity (void);GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m);GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m);GLAPI void GLAPIENTRY glLoadName (GLuint name);GLAPI void GLAPIENTRY glLogicOp (GLenum opcode);GLAPI void GLAPIENTRY glMap1d (GLenum target, GLdouble u1, GLdouble u2,GLint stride, GLint order, const GLdouble *points);GLAPI void GLAPIENTRY glMap1f (GLenum target, GLfloat u1, GLfloat u2,GLint stride, GLint order, const GLfloat *points);GLAPI void GLAPIENTRY glMap2d (GLenum target, GLdouble u1, GLdouble u2,GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride,GLint vorder, const GLdouble *points);GLAPI void GLAPIENTRY glMap2f (GLenum target, GLfloat u1, GLfloat u2,GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride,GLint vorder, const GLfloat *points);GLAPI void GLAPIENTRY glMapGrid1d(GLint un, GLdouble u1, GLdouble u2);GLAPI void GLAPIENTRY glMapGrid1f (GLint un, GLfloat u1, GLfloat u2);GLAPI void GLAPIENTRY glMapGrid2d (GLint un, GLdouble u1, GLdouble u2,GLint vn, GLdouble v1, GLdouble v2);GLAPI void GLAPIENTRY glMapGrid2f (GLint un, GLfloat u1, GLfloat u2,GLint vn, GLfloat v1, GLfloat v2);GLAPI void GLAPIENTRY glMaterialf (GLenum face, GLenum pname, GLfloatparam);GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, constGLfloat *params);GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLintparam);GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, constGLint *params);GLAPI void GLAPIENTRY glMatrixMode (GLenum mode);。