OpenGL绘图相关函数
GLSL常用内置函数汇总
GLSL常用内置函数汇总GLSL(OpenGL Shading Language)是一种用于编写着色器代码的高级编程语言,主要用于实现图形渲染管线中的着色器功能。
GLSL提供了许多内置函数,用于执行各种常见的数学运算、图形处理和纹理操作。
下面是GLSL常用的内置函数的汇总。
一、数学函数1. sin(x): 返回角度x的正弦值。
2. cos(x): 返回角度x的余弦值。
3. tan(x): 返回角度x的正切值。
4. pow(x, y): 返回x的y次幂。
5. sqrt(x): 返回x的平方根。
6. abs(x): 返回x的绝对值。
7. floor(x): 返回不大于x的最大整数。
8. ceil(x): 返回不小于x的最小整数。
9. mod(x, y): 返回x除以y的余数。
10. min(x, y): 返回x和y中的最小值。
11. max(x, y): 返回x和y中的最大值。
二、向量和矩阵函数1. length(x): 返回向量x的长度。
2. dot(x, y): 返回向量x和y的点积。
3. cross(x, y): 返回向量x和y的叉积。
4. normalize(x): 返回一个与向量x方向相同的单位向量。
三、纹理函数1. texture2D(sampler, coord): 根据指定的纹理坐标从纹理采样器sampler中获取颜色值。
2. textureCube(sampler, coord): 根据指定的纹理坐标从立方体贴图采样器sampler中获取颜色值。
3. texture2DProj(sampler, coord): 根据指定的纹理坐标从投影纹理采样器sampler中获取颜色值。
4. texture2DLod(sampler, coord, level): 根据指定的纹理坐标和LOD级别从纹理采样器sampler中获取颜色值。
5. textureCubeLod(sampler, coord, level): 根据指定的纹理坐标和LOD级别从立方体贴图采样器sampler中获取颜色值。
glsl函数
glsl函数GLSL(OpenGL着色器语言)是一种基于C语言的着色器语言,被广泛用于图形学领域中的渲染管线中。
GLSL函数是GLSL中的基本构件,它们可以让我们实现复杂的计算和操作图像。
下面介绍几个常用的GLSL函数。
1. mix函数:mix函数可以用于线性插值。
它需要三个参数,分别是起始值、终止值以及插值因子,插值因子的范围通常是[0,1]。
对于一个二维向量,可以使用如下语句进行线性插值:vec2 result = mix(startingVector, endingVector, interpolationFactor);2. dot函数:dot函数可以计算两个向量的点积。
它的返回值是两个向量的标量积,可以用于计算向量间的角度和是否平行等。
float dotProduct = dot(vectorA, vectorB);3. normalize函数:normalize函数可以将一个向量转化为单位向量,即长度为1的向量。
如果我们想计算两个向量夹角的余弦值,可以使用normalize函数和dot函数:float cosine = dot(normalize(vectorA), normalize(vectorB));4. length函数:length函数可以计算向量的长度。
它的返回值是一个标量值:float vectorLength = length(vector);5. clamp函数:clamp函数可以将一个值限制在一个区间内。
它需要三个参数,分别是待限制的值、最小值和最大值。
如果待限制的值超出指定区间,则返回最小值或最大值。
float result = clamp(value, minValue, maxValue);这里只是介绍了几个常用的GLSL函数,GLSL还有许多其它有用的函数,例如trunc函数可以快速舍去小数部分,fract函数可以返回一个值的小数部分,ceil 和floor函数可以用于上下取整等。
gldrawarrays 用法
gldrawarrays 用法GLDrawArrays函数是OpenGL中的一个函数,用于绘制基于顶点的图形。
它通过将顶点数组中的顶点按照特定的方式组合来创建图形。
GLDrawArrays函数的用法如下:1. 首先,要确保已经创建了一个OpenGL上下文,并进行了初始化。
2. 定义一个顶点数组,包含了要绘制的图形的顶点坐标。
每个顶点的坐标通常使用三个浮点数表示,分别对应X、Y、Z轴的坐标。
3. 使用glGenBuffers函数生成一个缓冲区对象(Buffer Object),用于存储和管理顶点数据。
4. 使用glBindBuffer函数将生成的缓冲区对象绑定到OpenGL的顶点缓冲区。
5. 使用glBufferData函数将顶点数组的数据复制到缓冲区对象。
6. 使用glEnableVertexAttribArray函数启用顶点属性数组。
7. 使用glVertexAttribPointer函数配置顶点属性数组。
8. 调用GLDrawArrays函数,以特定的方式组合顶点。
9. 最后,使用glDisableVertexAttribArray函数禁用顶点属性数组,释放相关资源。
GLDrawArrays函数的参数包括绘制模式、顶点数组的起始索引和顶点数量。
绘制模式可以是GL_POINTS、GL_LINES、GL_TRIANGLES等,用于指定绘制的方式。
顶点数组的起始索引表示从数组的哪个位置开始绘制,顶点数量表示绘制多少个顶点。
总结来说,GLDrawArrays函数用于根据顶点数组绘制图形。
首先需要将顶点数据传输到OpenGL的缓冲区对象中,然后根据顶点的数量和绘制模式调用GLDrawArrays函数进行绘制。
这一过程需要在正确的OpenGL上下文中进行,并且需要适当配置顶点属性数组。
glbegin参数
glbegin参数在OpenGL中,绘制图形需要使用到glbegin函数。
glbegin函数接受一个参数,表示要绘制的图形的类型。
在不同的参数设置下,glbegin函数可以绘制出不同种类的图形。
下面将对不同的glbegin参数进行详细介绍。
1. GL_POINTSGL_POINTS表示绘制一系列的点。
每个点的坐标都是由glvertex 指定的。
可以通过glPointSize函数来设置点的大小。
2. GL_LINESGL_LINES表示绘制一系列的线段。
每条线段由两个点通过glvertex指定。
每两个相邻的点将形成一条线段。
3. GL_LINE_STRIPGL_LINE_STRIP表示绘制一系列的连接线段。
即一个点连接到前一个点,直到最后一个点连接到第一个点。
4. GL_LINE_LOOPGL_LINE_LOOP和GL_LINE_STRIP类似,不同之处在于GL_LINE_LOOP连接最后一个点到第一个点。
5. GL_TRIANGLESGL_TRIANGLES表示绘制一系列的三角形。
每个三角形由三个点通过glvertex指定。
6. GL_TRIANGLE_STRIPGL_TRIANGLE_STRIP表示绘制由一系列连接三角形组成的图形。
前三个点生成第一个三角形,接下来的每个点都将生成一个新的三角形,和前一个三角形共用一条边。
7. GL_TRIANGLE_FANGL_TRIANGLE_FAN和GL_TRIANGLE_STRIP类似,不同之处在于GL_TRIANGLE_FAN以第一个点为顶点,组成多个三角形。
8. GL_QUADSGL_QUADS表示绘制一系列的四边形。
每个四边形由四个点通过glvertex指定。
9. GL_QUAD_STRIPGL_QUAD_STRIP表示绘制由一系列连接四边形组成的图形。
每四个相邻的点组成一个四边形。
10. GL_POLYGONGL_POLYGON表示绘制一个多边形图形。
gltranslatef函数
gltranslatef函数
glTranslatef函数是一种OpenGL图形系统提供的基本函数,它的作用是改变图形的位置。
它接受三个参数,分别是X轴、Y轴和Z 轴的转换值。
它可以实现3D图形的平移操作,也可以用于2D图形的平移操作。
glTranslatef函数的一般语法如下:
glTranslatef (x, y, z);
其中,参数x,y,z是位移的量,表示在X,Y,Z轴上平移的距离。
glTranslatef函数可以用来实现对图形对象统一的平移操作,这样可以减少程序的开发和调试工作量,更加便捷。
同时,也可以用来在3D世界中实现物体的移动。
例如,要将一个物体平移到另一个位置,可以使用glTranslatef函数来实现,传递参数x,y,z表示物体在X,Y,Z轴上的位移。
在OpenGL中,图形的变换操作(包括缩放、旋转、平移等)都是以矩阵形式进行操作的。
在调用glTranslatef函数时,系统会使用一个4x4的矩阵来改变图形的位置,矩阵的第4列的四个元素就是glTranslatef传入的参数x,y,z。
glTranslatef函数是OpenGL中非常重要的一个函数,它可以实现最基本的平移操作:x,y,z轴上的位移。
同时,它也可以用于实现3D世界中物体移动的操作,因此,glTranslatef函数在OpenGL
图形系统中十分重要,也是非常常用的函数。
- 1 -。
使用opengl程序绘制实线虚线和点划线
使用opengl程序绘制实线虚线和点划线OpenGL是一种用于绘制2D和3D图形的跨平台编程接口。
它提供了一套功能强大的函数和工具,可以在各种显示设备上渲染图形。
在OpenGL中,可以使用不同的绘制模式来绘制实线、虚线和点划线。
本文将介绍如何使用OpenGL程序实现这些效果。
在开始之前,我们首先需要安装OpenGL库和开发环境。
OpenGL可以在不同的平台上使用,例如Windows、Linux和macOS。
对于Windows用户,可以使用MinGW或者MSYS2等工具链来配置开发环境。
对于Linux和macOS用户,可以使用GCC和Xcode来配置开发环境。
安装完成后,我们可以开始编写OpenGL程序。
在OpenGL中,绘图是通过一系列函数和状态来实现的。
以下是一个基本的OpenGL程序的框架:```cpp#include <GL/glut.h>void displa//清空屏幕glClear(GL_COLOR_BUFFER_BIT);//设置绘图颜色glColor3f(1.0f, 1.0f, 1.0f);//绘制实线glBegin(GL_LINES);glVertex2f(-0.5f, 0.0f);glVertex2f(0.5f, 0.0f);glEnd(;//绘制虚线//...//绘制点划线//...//刷新缓冲区glutSwapBuffers(;int main(int argc, char** argv)// 初始化窗口和OpenGL环境glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE , GLUT_RGB); glutInitWindowSize(800, 600); glutCreateWindow("OpenGL Program");//注册绘图函数glutDisplayFunc(display);//进入主循环glutMainLoop(;return 0;```在以上程序中,`glClear(GL_COLOR_BUFFER_BIT)`用于清空屏幕,`glColor3f(1.0f, 1.0f, 1.0f)`用于设置绘图颜色。
opengl画点函数
opengl画点函数OpenGL(Open Graphics Library)是一种用于渲染2D和3D图形的跨平台编程接口。
它提供了一系列函数,用于绘制各种图形元素,包括点、线、多边形等。
在本文中,我们将重点介绍OpenGL的画点函数,展示如何使用它来绘制点。
在OpenGL中,绘制点的函数是glBegin(GL_POINTS)和glVertex2f(x, y),其中(x, y)表示点的坐标。
首先,我们需要在程序中初始化OpenGL环境,并设置视口和投影矩阵。
然后,通过调用glBegin(GL_POINTS)函数告诉OpenGL接下来要绘制的是点,接着通过glVertex2f(x, y)函数指定点的坐标。
下面是一个简单的示例程序,演示了如何使用OpenGL的画点函数绘制一个点:```c++#include <GL/glut.h>void init() {glClearColor(0.0, 0.0, 0.0, 0.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, 400.0, 0.0, 400.0);}void drawPoint() {glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0, 0.0, 0.0);glPointSize(5.0);glBegin(GL_POINTS);glVertex2f(200.0, 200.0);glEnd();glFlush();}int main(int argc, char** argv) {glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(400, 400);glutInitWindowPosition(100, 100);glutCreateWindow("OpenGL Draw Point");init();glutDisplayFunc(drawPoint);glutMainLoop();return 0;}```在上面的示例程序中,我们首先通过glutInit函数初始化了OpenGL 环境,并设置了显示模式、窗口大小和位置。
OenGL函数大全
OenGL函数大全OenGL函数大全第一篇GL库函数第一章使用颜色l. l glshadeModel--选择平面明暗模式或光滑明暗模式1. 2 glColor--设置当前颜色1. 3 glColorPointer--定义颜色数组1. 4 gllndex--设置当前颜色索引1. 5 gllndexPointer--定义颜色索引数组1. 6 glCOforTableEXT--为目标调色板纹理指定调色板的格式和大小1. 7 glColorsubTableEXT--指定需要替代的目标纹理调色板的一部分第二章绘制几何图原及物体2. l glVertex--指定顶点2. 2 glVertexPointer--定义顶点数据数组2. 3 glArrayElement--指定用来绘制顶点的数组元素2. 4 glBegin, glEnd--限定一个或多个图原顶点的绘制2. 5 glEdgeFlag, glEdgeFlagy--指定边界标记2. 6 glPointsize--指定光栅化点的直径2. 7 glLinewidth--指定光栅化直线的宽度2. 8 glLinestipple--指定点划线2. 9 glPolygonMode--选择多边形光栅化模式2. 10 glFrontFace--定义正面多边形和反反面多边形2. 11 glPolygonstipple--设置多边形点划图2. 12 glDrawElements--从数组数据绘制图原2. 13 glRect--绘制矩形第三章坐标转换3. l glTranslate--用平移矩阵乘以当前矩阵3. 2 glRotate--用旋转矩阵乘以当前矩阵3. 3 glscale--用缩放矩阵乘以当前矩阵3. 4 glViewport--设置机口3. 5 glFrustum--用透视矩阵乘以当前矩阵3. 6 glorthO--用正视矩阵乘以当前矩阵3. 7 glClipPlane--指定切割几何物体的平面第四章堆栈操作4. l glLoadMatrix--用任意矩阵替换当前矩阵4. 2 glMultMatrix--用任意矩阵乘以当前矩阵4. 3 glMatrixMode--指定哪一个矩阵是当前矩阵4. 4 glPushMatrix, glPopMatrix--压人和弹出当前矩阵堆栈4. 5 glPushAttrib, glPopAttrib--压人和弹出属性堆栈4. 6 glPushClientAttrib, glPopClientAttrib--在客户属性堆栈中保存和恢复客户状态变量组4. 7 glPushName, gPopName--压人和弹出名称堆栈4. 8 gllnitNames--初始名称堆栈4, 9 glLoadName--向名称堆栈中装载名称第五章显示列表5. l glNewList, glEndList--创建或替换一个显示列表5. 2 glCallLISt--执行一个显示列表5. 3 glCallLISts--执行一列显示列表5. 4 glGenLists--生成一组空的相邻的显示列表5. 5 glDeleteLists--删除一组相邻的显示列表5. 6 gllSLISt--检验显示列表的存在第六章使用光照和材质6. l glNormal--设置当前的法向量6. 2 glNormalPointer--定义法向量数组6. 3 glLight--设置光源参数6. 4 glLightModel--设置光照模型参数6. 5 glMaterial--为光照模型指定材质参数6. 6 glColorMateria--使材质颜色跟踪当前颜色第七章像素操作7. l glRasterPos--为像素操作指定光栅位置7. 2 glBitmap--绘制位图7. 3 glReadPixels--从帧缓存中读取一块像素7. 4 glDrawPixels--将一个像素块写人帧缓存7. 5 glCopyPixels--在帧缓存中拷贝像素7. 6 glCopyTexlmage1D--将像素从帧缓存拷贝到一维纹理图像中7. 7 glCopyTexlmageZD--把像素从帧缓存拷贝到二维纹理图像中7. 8 glCopyTexsublmagelD--从帧缓存中拷贝一维纹理图像的子图像7. 9 glCopyTexsublmageZD--从帧缓存中拷贝二维纹理图像的子图像7. 10 glPixelZoom--指定像素缩放因子7. 11 glPixelstore--设置像素存储模式7. 12 glPixel T ransfer--设置像素传输模式7. 13 glPixelMap--设置像素传输映射表第八章纹理映射8. l glTexlmagelD--指定一维纹理图像8. 2 gl T exlmageZD--指定二维纹理映像8. 3 gl T exParameter--设置纹理参数8. 4 gl T exsublmage1D--指定已存在的一维纹理图像的一部分8. 5 gl T exsublmageZD--指定已存在的二维纹理图像的一部分8. 6 gl T exEnv--设置纹理环境参数8. 7 gl T exCoord--设置当前纹理坐标8. 8 gl T exGen--控制纹理坐标的生成8. 9 gl T exCoordPointer--定义纹理坐标数组8. 10 glDeleteTextures--删除命名的纹理第九章特殊效果操作9. l glBlendFunc--指定像素的数学算法9. 2 glHint--指定由实现确定的控制行为9. 3 glFOg--指定雾化参数第十章帧缓存操作10. l glClear--将缓存清除为预先的设置值10. 2 glClearAccum--设置累加缓存的清除值10. 3 glClearCo lor--设置颜色缓存的清除值10. 4 glClearDepth--设置深度缓存的清除值10. 5 glClearlndex--设置颜色索引缓存的清除值10. 6 glClearstencil--设置模板缓存的清除值10. 7 glDrawBuffer--指定绘制的颜色缓存10. 8 gllndexMask--控制颜色索引缓存中单个位的写操作10. 9 glColorMask--激活或关闭帧缓存颜色分量的写操作10. 10 glDepthMask--激活或关闭对深度缓存的写操作10. 11 glstencilMask--控制模板平面中单个位的写操作10. 12 glAlphaFunc-一指定alpha检验函数10. 13 glstencilFunc--设置模板检验函数和参考值10. 14 glstencilop--设置模板检验操作10. 15 glDepthFunc--指定深度比较中使用的数值10. 16 glDepthRange--指定从单位化的设备坐标到窗口坐标的z 值映射10. 17 glLOgiCOp--为颜色索引绘制指定逻辑像素操作10. 18 glACCum--对累加缓存进行操作第十一章绘制曲线和曲面11. l glEvalCoord--求取激活的一维和二维纹理图11. 2 glMapl--定义一维求值器11. 3 glMapZ--定义二维求值器11. 4 glMapGrid--定义一维或二维网格11. 5 glEvalMesh--计算一维或二维点网格或线网格11. 6 glEvalPoint--生成并求取网格中的单个点第十二章查询函数12. l glGet--返回所选择的参数值12. 2 glGetClipPlane--返回指定的切平面系数12. 3 glGetColorTableEXT--获得当前目标纹理调色板的颜色表数据12. 4 glGetColorTableParameterfvEXT, glGetColorTableParameterlvEXT-从颜色表中获得调色板参数12. 5 glGetError--返回错误信息12. 6 glGetLight--返回光源参数值12. 7 glGetMap--返回求值器参数12. 8 glGetMaterial--返回材质参数12. 9 glGetPixelMap--返回指定的像素映像12. 10 glGetPointery--返回顶点数据数组地J12. 11 glGetPolygonstipple--返回多边形点戈12. 12 glGetstring--返回描述当前OpenGL12. 13 glGetTexEnv--返回纹理环境参数12. 14 glGetTexGen--返回纹理坐标生成参数12. 15 glGetTexlmage--返回纹理图像12. 16 glGetTexLevelParameter--返回指定细节水平的纹理参数值12. 17 glGetTexParameter--返回纹理参数值。
polygon函数
,描述此函数
Polygon函数是OpenGL的一个函数,用于画一个多边形特别复杂的
2D图形。
它接受多边形的坐标数组和它们内部的点,以便将其渲染到
渲染系统中。
它主要用于在OpenGL中绘制一个或多个形状,如矩形,圆形,椭圆,多边形等。
Polygon函数创建一个GPU上的VBO,这意味着它在内存中缓存这些
数据,以便更加高效、快速地绘制图像。
一旦它被创建,只要调用这
个函数,就可以使用它向渲染系统提交多边形的坐标和其他数据来渲
染2D图形。
既可以将单个多边形提交给渲染系统,也可以将任意数量的多边形提交。
Polygon函数不仅可以用于绘制2D图形,也可以用于绘制3D图形,
只要提供正确的参数。
它可以使用PC级以及更高级别的GPU来渲染
3D图形。
与2D图形不同,3D图形需要更多的参数,如法线、纹理等。
它们也需要用到游戏引擎或图形库,才能在游戏或图像处理程序的可
视化中完美地绘制3D图形。
此外,Polygon函数也可以用于建模和渲染几何体,如圆锥,方锥等。
使用此函数,开发人员可以创建一些用于绘制拓扑形状的复杂点组合,以便进行高度精确的动画和可视化。
总而言之,Polygon函数是OpenGL提供的一种方法,能够从突破性角
度地绘制2D和3D图形。
它可以被GPU缓存,使得它可以以较快的速度渲染2D和3D图形,建模和渲染各种几何体,从而创造出更加精确
的动画和可视化内容。
OpenGL主要函数
1opengl 函数查询一:GL库函数使用颜色glshadeModel--选择平面明暗模式或光滑明暗模式glColor--设置当前颜色glColorPointer--定义颜色数组gllndex--设置当前颜色索引gllndexPointer--定义颜色索引数组glCOforTableEXT--为目标调色板纹理指定调色板的格式和大小glColorsubTableEXT--指定需要替代的目标纹理调色板的一部分绘制几何图原及物体glVertex--指定顶点glVertexPointer--定义顶点数据数组glArrayElement--指定用来绘制顶点的数组元素glBegin,glEnd--限定一个或多个图原顶点的绘制glEdgeFlag,glEdgeFlagy--指定边界标记glPointsize--指定光栅化点的直径glLinewidth--指定光栅化直线的宽度glLinestipple--指定点划线glPolygonMode--选择多边形光栅化模式glFrontFace--定义正面多边形和反反面多边形glPolygonstipple--设置多边形点划图glDrawElements--从数组数据绘制图原glRect--绘制矩形坐标转换glTranslate--用平移矩阵乘以当前矩阵glRotate--用旋转矩阵乘以当前矩阵glscale--用缩放矩阵乘以当前矩阵glViewport--设置机口glFrustum--用透视矩阵乘以当前矩阵glorthO--用正视矩阵乘以当前矩阵glClipPlane--指定切割几何物体的平面堆栈操作glLoadMatrix--用任意矩阵替换当前矩阵glMultMatrix--用任意矩阵乘以当前矩阵glMatrixMode--指定哪一个矩阵是当前矩阵glPushMatrix,glPopMatrix--压人和弹出当前矩阵堆栈glPushAttrib,glPopAttrib--压人和弹出属性堆栈glPushClientAttrib,glPopClientAttrib--在客户属性堆栈中保存和恢复客户状态变量组glPushName,gPopName--压人和弹出名称堆栈gllnitNames--初始名称堆栈2glLoadName--向名称堆栈中装载名称显示列表glNewList,glEndList--创建或替换一个显示列表glCallLISt--执行一个显示列表glCallLISts--执行一列显示列表glGenLists--生成一组空的相邻的显示列表glDeleteLists--删除一组相邻的显示列表gllSLISt--检验显示列表的存在使用光照和材质glNormal--设置当前的法向量glNormalPointer--定义法向量数组glLight--设置光源参数glLightModel--设置光照模型参数glMaterial--为光照模型指定材质参数glColorMateria--使材质颜色跟踪当前颜色像素操作glRasterPos--为像素操作指定光栅位置glBitmap--绘制位图glReadPixels--从帧缓存中读取一块像素glDrawPixels--将一个像素块写人帧缓存glCopyPixels--在帧缓存中拷贝像素glCopyTexlmage1D--将像素从帧缓存拷贝到一维纹理图像中glCopyTexlmageZD--把像素从帧缓存拷贝到二维纹理图像中glCopyTexsublmagelD--从帧缓存中拷贝一维纹理图像的子图像glCopyTexsublmageZD--从帧缓存中拷贝二维纹理图像的子图像glPixelZoom--指定像素缩放因子glPixelstore--设置像素存储模式glPixelTransfer--设置像素传输模式glPixelMap--设置像素传输映射表纹理映射glTexlmagelD--指定一维纹理图像glTexlmageZD--指定二维纹理映射glTexParameter--设置纹理参数glTexsublmage1D--指定已存在的一维纹理图像的一部分glTexsublmageZD--指定已存在的二维纹理图像的一部分glTexEnv--设置纹理环境参数glTexCoord--设置当前纹理坐标glTexGen--控制纹理坐标的生成glTexCoordPointer--定义纹理坐标数组glDeleteTextures--删除命名的纹理特殊效果操作glBlendFunc--指定像素的数学算法glHint--指定由实现确定的控制行为glFOg--指定雾化参数3帧缓存操作glClear--将缓存清除为预先的设置值glClearAccum--设置累加缓存的清除值glClearColor--设置颜色缓存的清除值glClearDepth--设置深度缓存的清除值glClearlndex--设置颜色索引缓存的清除值glClearstencil--设置模板缓存的清除值glDrawBuffer--指定绘制的颜色缓存gllndexMask--控制颜色索引缓存中单个位的写操作glColorMask--激活或关闭帧缓存颜色分量的写操作glDepthMask--激活或关闭对深度缓存的写操作glstencilMask--控制模板平面中单个位的写操作glAlphaFunc-一指定alpha检验函数glstencilFunc--设置模板检验函数和参考值glstencilop--设置模板检验操作glDepthFunc--指定深度比较中使用的数值glDepthRange--指定从单位化的设备坐标到窗口坐标的z值映射glLOgiCOp--为颜色索引绘制指定逻辑像素操作glACCum--对累加缓存进行操作绘制曲线和曲面glEvalCoord--求取激活的一维和二维纹理图glMapl--定义一维求值器glMapZ--定义二维求值器glMapGrid--定义一维或二维网格glEvalMesh--计算一维或二维点网格或线网格glEvalPoint--生成并求取网格中的单个点查询函数glGet--返回所选择的参数值glGetClipPlane--返回指定的切平面系数glGetColorTableEXT--获得当前目标纹理调色板的颜色表数据glGetColorTableParameterfvEXT,glGetColorTableParameterlvEXT-从颜色表中获得调色板参数glGetError--返回错误信息glGetLight--返回光源参数值glGetMap--返回求值器参数glGetMaterial--返回材质参数glGetPixelMap--返回指定的像素映像glGetPointery--返回顶点数据数组地JglGetPolygonstipple--返回多边形点戈glGetstring--返回描述当前OpenGLglGetTexEnv--返回纹理环境参数glGetTexGen--返回纹理坐标生成参数glGetTexlmage--返回纹理图像4glGetTexLevelParameter--返回指定细节水平的纹理参数值glGetTexParameter--返回纹理参数值二:GLU库函数绘制NURBS曲线和曲面gluNewNurbsRenderer--创建一个NURBS对像gluNurbsProperty--设置NURBS属性gluNurbsCallback--为NURBS对像定义回调函数gluBeginCurve,gluEndCurve--限定NURBS曲线的定义gluNurbsCurve--定义NURBS曲线的形状gluDeleteNurbsRenderer--删除NURBS对像gluBeglnsurface,gluEndsurface--限定NURBS曲面的定义ghiNurbssurface--定义NURBS曲面的形状gluBeginTrim,gluEndTrim--限定NURBS裁剪环的定义gluPwlCurve--描述分段线性NURBS裁剪曲线gfuBeglnPolygon,gluEndPolygon--限定多边形的定义gluPickMatrix--定义拾取区域绘制二次几何物体gluNewQuadric--创建一个二次对象gluQuadricDrawsope--指定二次对象的绘制方式gluQuadricNormals--指定二次对象使用的法向量类型gluQuadricorientation--指定二次对象的内侧面或外侧面方向gluCylinder--绘制圆柱体ghisphere--绘制球体glllDISk--绘制圆盘gluPartialDisk--绘制部分圆盘gliJDeleteQuadric--删除二次对象gluQuadricTexture--指定是否为二次对象使用纹理ghiQuadricCallback--为二次对象定义回调网格化gluNewTess--创建一个网格化对象gluTessVertex--在多边形上指定顶点gluTessCallback--为网格化对象定义回调gluTessBeglnPolygon,ghiTessEndPolygon--限定多边形的描述gluTessBeglnContour,gluTessEndContour--限定多边形轮廓线的定义gluTessProperty--设置网格化对象的属性ghiNextContour--标记开始绘制另一个轮廓线gluTessNormal--为多边形指定法向量gluDeleteTess--删除网格化对象坐标变换gluOorthoZD--定义二维正视投影矩阵gluPerspective--创建透视投影矩阵gltlLOOkAt--定义视景转换gluProject--将物体坐标映射为窗口坐标5gluInProject--将窗口坐标映射力物体坐标多重映射gfuBuildlDMipmaps--创建一维多重映射gluBuildZDMipmaps--创建H维多重映射gluSCalelmage--将图像缩放到任意尺寸查询函数ghiErrorstring--从OpenGL或GLU错误代码中生成错误字符串gluGetNurbsProperty--获得NURBS属性ghiGetstring--获得描述GLU版本号或支持GLU扩展调用的字符串ghiGetTessProperty--获得网格化对象的属性三:GLUT库函数初始化和启动事件处理ghjtlnit--初始化GLUT库glutlnitwindowPosition--设置初始窗口位置glutlnitwindowsize--设置初始窗口大小glutlnitDisplayMode--设置初始显示模式glutMainLoop--进人GLUT事件处理循环窗口管理glutCreatewindow--创建顶层窗口glutCreatesubwindow--创建子窗口ghitHidewindow--隐藏当前窗口的显示状态glutshowwindow--改变当前窗口的显示状态,使其显示gfutsetwindowTitle--设置当前顶层窗口的窗口标题ghitsetlconTitle--设置当前顶层窗口的图标标题ghitPostRedisplay--标记当前窗口需要重新绘制glutswapBuffers--交换当前窗口的缓存glutFullscreen--关闭全屏显示glutPositionwindow--申请改变当前窗口的位置gintReshapewindow--申请改变当前窗口的大小glutsetwindow--设置当前窗口ghitGetwindow--获得当前窗口的标识符glutPopwindow--改变当前窗口的位置,使其前移ghitPtshwilldOO--改变当前窗口的位置,使其后移glutDestroywindow--销毁指定的窗口glutlconifywindow--使当前窗口图标化显示glutsetCursor--设置当前窗口的鼠标形状重叠层管理glutEstablishoverlay--创建当前窗口的重叠层glutUseLayer--改变当前窗口的使用层glutRemoveoverlay--删除当前窗口的重叠层glutPostoverlayRedisplay--标记当前窗口的重叠层需要重新绘制glutshowoverlay--显示当前窗口的重叠层6glutHideoverlay--显示当__________前窗口的重叠层菜单管理glutCreateMenu--创建一个新的弹出式菜单glutAddMenuEntry--在当前菜单的底部增加一个菜单条目glutAddsubMenu--在当前菜单的底部增加一个子菜单触发条目glutAttachMenu--把当前窗口的一个鼠标按键与当前菜单的标识符联系起来glutGetMenu--获取当前菜单的标识符glutsetMenu--设置当前菜单glutDestroyMenu--删除指定的菜单glutChangeToMenuEntry--将指定的当前菜单中的菜单项更改为菜单条目glutChangeTosubMenu--将指定的当前菜单中的菜单项更改为子菜单触发条目glutRemoveMenultem--删除指定的菜单项glutDetachMenu--释放当前窗口的一个鼠标按键注册国调函数glutDispfayFunc--注册当前窗口的显示回调函数glutReshapeFunc--注册当前窗口的形状变化回调函数glutMouseFunc--注册当前窗口的鼠标回调函数glutMotionFunc--设置移动回调函数glutldleFunc--设置全局的空闲回调函数glutVisibilityFunc--设置当前窗口的可视回调函数glutKeyboardFunc--注册当前窗口的键盘回调函数glutspecialFunc--设置当前窗口的特定键回调函数glutoverlayDisplayFunc--注册当前窗口的重叠层显示回调函数glutPassiveMotionFunc--设置当前窗口的被动移动回调函数glutEntryFunc--设置当前窗口的鼠标进出回调函数glutspaceballMotionFunc--设置当前窗口的空间球移动回调函数glutspaceballRotateFunc--设置当前窗口的空间球旋转回调函数glutspaceballButtonFunc--设置当前窗口的空间球按键回调函数glutButtonBoxFunc--设置当前窗口的拨号按键盒按键回调函数glutDialsFunc--设置当前窗口的拨号按键盒拨号回调函数glutTabletMotionFunc--设置图形板移动回调函数glutTabletButtonFunc--设置当前窗口的图形板按键回调函数glutMenustatusFunc--设置全局的菜单状态回调函数glutTimerFunc--注册按一定时间间隔触发的定时器回调函数颜色素引映射表管理glutsetColor--设置当前窗口当前层一个颜色表单元的颜色glutGetColor--获得指定的索引颜色glutCopyColormap--将逻辑颜色表从指定的窗口拷贝到当前窗口状态检索glutGet--检索指定的GLUT状态glutLayerGet--检索属于当前窗口重叠层的GLU T状态glutDeviceGet--检索GLUT设备信息glutGetModifiers--返回修饰键在引起某些回调的事件发生时的状态glutExtensionsupported--判别当前OpenGL 版本是否支持给定的OpenGL扩展7字体绘制glutBltmapCharcter--绘制一个位图字符glutBitmapwidth--返回一个位图字符的宽度glutstrokeCharcter--绘制一个笔画字符glutstrokewidth--返回一个笔画字体的宽度几何图形绘制glutSolidsphere,glutwiresphere--绘制实心球体和线框球体glutsolidCube,glutwireCube--绘制实心立方体和线框立方体glutsolidCone,glutwireCone--绘制实心圆锥体和线框圆锥体glutsolidTorus,glutwireTorus--绘制实心圆环和线框圆环glutSolidDOdeCahedroll,glLltwiFeDOdechedfotl--绘制实心十二面体和线框十二面体glutSolidOctahedron,glutWireOctahedron--绘制买心八面体和线框八面体glutsolldTetrahedron,glutwireTetrahedron--绘制实心四面体和线框四面体glutSollelcosahedron,glutwirelcosahedron--绘制实心二十面体和线框二十面体glutsolidTeapot,glutwireTeapot--绘制实心茶壶和线框茶壶__。
opengl使用手册 简书
opengl使用手册简书【实用版】目录一、OpenGL 简介二、OpenGL 函数库1.核心函数库2.矩阵操作、几何变换和投影变换函数3.扩展库 GLEW三、OpenGL 菜单的使用1.交互式输入设备的处理2.glut 命令与鼠标函数四、总结正文一、OpenGL 简介OpenGL(Open Graphics Library)是一个跨平台的图形编程接口,用于渲染 2D 和 3D 图形。
它被广泛应用于游戏开发、计算机辅助设计、虚拟现实等领域。
OpenGL 提供了丰富的函数库,可以实现各种复杂的图形效果。
二、OpenGL 函数库OpenGL 的函数库主要可以分为核心函数库和扩展库。
核心函数库包含了基本的绘图功能,如绘制几何图元、矩阵操作、几何变换和投影变换等。
扩展库 GLEW(GLEW Extension Wrangler Library)则提供了更多的高级功能,如阴影、纹理贴图等。
1.核心函数库核心函数库包含了许多常用的绘图函数,如:- glBegin():开始绘制- glEnd():结束绘制- glVertex():绘制一个顶点- glColor():设置颜色2.矩阵操作、几何变换和投影变换函数OpenGL 提供了丰富的矩阵操作、几何变换和投影变换函数,如:- glPushMatrix():矩阵入栈- glPopMatrix():矩阵出栈- glTranslate():几何变换(平移)- glRotate():几何变换(旋转)- glScale():几何变换(缩放)- gluPerspective():投影变换3.扩展库 GLEWGLEW 是一个方便的扩展库,可以方便地管理 OpenGL 扩展。
它提供了一系列的函数,如:- glewInit():初始化 GLEW- glewGetError():获取 GLEW 错误- glewCreateContext():创建 OpenGL 上下文- glewMakeCurrent():设置当前 OpenGL 上下文三、OpenGL 菜单的使用OpenGL 支持交互式输入设备,如鼠标和键盘。
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()//可以关闭之。
void glLineStipple(GLint factor, GLushort pattern); //来设置虚线的样式。
glPolygonMode(GL_FRONT, GL_FILL); // 设置正面为填充方式glPolygonMode(GL_BACK, GL_LINE); // 设置反面为边缘绘制方式glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); // 设置两面均为顶点绘制方式glFrontFace(GL_CCW); // 设置CCW方向为“正面”,CCW即CounterClockWise,逆时针glFrontFace(GL_CW); // 设置CW方向为“正面”,CW即ClockWise,顺时针glEnable(GL_CULL_FACE);//来启动剔除功能(使用glDisable(GL_CULL_FACE)可以关闭之)glCullFace(GL_FRONT_AND_BACK);//剔除正反两面的多边形。
glEnable(GL_POL YGON_STIPPLE);//来启动镂空模式(使用glDisable(GL_POLYGON_STIPPLE)可以关闭之)。
void glPolygonStipple(const GLubyte *mask); //设置镂空的样式。
void glColor3f(GLfloat red, GLfloat green, GLfloat blue);//设置颜色void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);void glIndexi(GLint c); //在颜色表中选择颜色,它的参数是一个整形。
glClearColor(1.0f, 0.0f, 0.0f, 0.0f); //指定“空”的颜色glClear(GL_COLOR_BUFFER_BIT); //意思是把屏幕上的颜色清空。
OpenGL参考函数
OpenGL参考函数1.1 颜色使用1. glShadeModel:选择平面明暗模式或光滑明暗模式C语言描述void glShadeModel( GLenum mode )参数mode 指定表示明暗模式的符号值,可以选择GL_FLAT(平面明暗模式)和GL_SMOOTH(光滑明暗模式),缺省值为GL_SMOOTH。
说明OpenGL图元需要进行明暗处理,处理得模式可以为平面明暗模式或光滑(Gouraud着色)明暗模式。
光滑明暗模式时,多边形各个内部点的颜色是根据各顶点指定的颜色来插值得到的,这意味着两个顶点之间的颜色是从一顶点的颜色渐变到另一顶点的颜色。
对于平面明暗模式,整个图元区域的颜色就是最后一个顶点指定的颜色,唯一例外的是GL_POLYGON,这是整个区域的颜色是第一个顶点所指定的颜色。
但要注意,如果激活了光照,计算到的顶点颜色都是光照后的结果颜色,若光照关闭,计算到的颜色就是指定顶点时的当前颜色。
2. glColor:设置当前颜色C语言描述void glcolor3b(GLbyte red,GLbyte green,GLbyte blue);void glcolor3d(GLdouble red,GLdouble green,GLdouble blue);void glcolor3f(GLfloat red,GLfloat green,GLfloat blue);void glcolor3i(GLint red,GLint green,GLint blue);void glcolor3s(GLshort red,GLshort green,GLshort blue);void glcolor3ub(GLubyte red,GLubyte green,GLubyte blue);void glcolor3ui(GLuint red,GLuint green,GLuint blue);void glcolor3us(GLushort red,GLushort green,GLushort blue);void glcolor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha);void glcolor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha);void glcolor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha);void glcolor4i(GLint red,GLint green,GLint blue,GLint alpha);void glcolor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha);void glcolor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha);void glcolor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha);void glcolor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha);void glcolor3bv(const GLbyte *v);void glcolor3dv(const GLdouble *v);void glcolor3fv(const GLfloat *v);void glcolor3iv(const GLint *v);void glcolor3sv(const GLshort *v);void glcolor3ubv(const GLubyte *v);void glcolor3uiv(const GLuint *v);59void glcolor3usv(const GLushort *v);void glcolor4bv(const GLbyte *v);void glcolor4dv(const GLdouble *v);void glcolor4fv(const GLfloat *v);void glcolor4iv(const GLint *v);void glcolor4sv(const GLshort *v);void glcolor4ubv(const GLubyte *v);void glcolor4uiv(const GLuint *v);void glcolor4usv(const GLushort *v);参数red,green, blue 指定当前颜色中的红、绿和蓝色成分。
OpenGL常用函数
OpenGL常用函数一.初始化void glutInit(int* argc, char** argv)这个函数用来初始化GLUT库。
对应main函数的形式应是:int main(int argc, char* argv[]);这个函数从main函数获取其两个参数。
void glutInitWindowSize(int width, int height);void glutInitWindowPosition(int x, int y);这两个函数很好理解是设置glut程序要产生的窗口的大小和位置(左上角)。
以像素为单位。
void glutInitDisplayMode(unsigned int mode);设置图形显示模式。
参数mode的可选值为:GLUT_RGBA:当未指明GLUT_RGBA或GLUT_INDEX时,是默认使用的模式。
表明欲建立RGBA模式的窗口。
GLUT_RGB:与GLUT-RGBA作用相同。
GLUT_INDEX:指明为颜色索引模式。
GLUT_SINGLE:只使用单缓存GLUT_DOUBLE:使用双缓存。
以避免把计算机作图的过程都表现出来,或者为了平滑地实现动画。
GLUT_ACCUM:让窗口使用累加的缓存。
GLUT_ALPHA:让颜色缓冲区使用alpha组件。
GLUT_DEPTH:使用深度缓存。
GLUT_STENCIL:使用模板缓存。
GLUT_MULTISAMPLE:让窗口支持多例程。
GLUT_STEREO:使窗口支持立体。
GLUT_LUMINACE:luminance是亮度的意思。
但是很遗憾,在多数OpenGL平台上,不被支持。
二.事件处理(Event Processing)void glutMainLoop(void)让glut程序进入事件循环。
在一个glut程序中最多只能调用一次。
一旦调用,会直到程序结束才返回。
三.窗口管理(Window Management)int glutCreateWindow(char* name);产生一个顶层的窗口。
OpenGL常用几何图形绘制函数
我想请问下使用twisted的建立httБайду номын сангаасs可以处理https请求的服务端和发送https请求的客户端需要用到哪些模块可以指点下吗
OpenGL常 用 几 何 图 形 绘 制 函 数
原创博文,转载请注明。
常见几何图形绘制函数:
glutSolidsphere,glutwiresphere--绘制实心球体和线框球体 glutsolidCube,glutwireCube--绘制实心立方体和线框立方体 glutsolidCone,glutwireCone--绘制实心圆锥体和线框圆锥体 glutsolidTorus,glutwireTorus--绘制实心圆环和线框圆环 glutSolidDOdeCahedroll,glLltwiFeDOdechedfotl--绘制实心十二面体和线框十二面体 glutSolidOctahedron,glutWireOctahedron--绘制买心八面体和线框八面体 glutsolldTetrahedron,glutwireTetrahedron--绘制实心四面体和线框四面体 glutSollelcosahedron,glutwirelcosahedron--绘制实心二十面体和线框二十面体 glutsolidTeapot,glutwireTeapot--绘制实心茶壶和线框茶壶
OpenGL函数介绍
OpenGL函数一)库函数开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。
它采用C语言风格,提供大量的函数来进行图形的处理和显示。
OpenGL图形库一共有100多个函数,它们分别属于OpenGL的基本库、实用库、辅助库等不同的库。
1、核心库,包含的函数有115个,它们是最基本的函数,其前缀是gl;这部分函数用于常规的、核心的图形处理,由gl.dll来负责解释执行。
核心库中的函数可以进一步分为以下几类函数。
(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*()等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指定二次曲面的绘制方式
gluQuadricDrawStyle(sphere, GLU_LINE);
2012-5-9
26 26
OpenGL中的实体模型函数 OpenGL中的实体模型函数
绘制二次曲面
gluSphere(sphere, radius, slices, stacks); gluCylinder(sphere,baseRadius,topRadius, height, slices, stacks); gluDisk(sphere,innerRadius,outerRadius, slices, stacks);
OpenGL中层次模型的实现
多级显示列表 OpenGL支持创建多级显示列表,即在glNewList 和glEndLsit函数对之间允许调用glCallList函数来 执行其他显示列表。 显示列表的删除 void glDeleteLists(GLuint listID, GLsizei range);
2012-5-9
22
OpenGL中的实体模型函数 OpenGL中的实体模型函数
GLUT库中的多面体函数
表4.1 GLUT生成规则多面体的函数 生成规则多面体的函数
函数 glutSolidTetrahedron( ) glutWireTetrahedron( ) glutSolidCube(size) glutWireCube(size) glutSolidOctahedron ( ) glutWireOctahedron ( ) 说明 绘制中心位于世界坐标系原点的实心四面体和线框四面体, 绘制中心位于世界坐标系原点的实心四面体和线框四面体,四面体 的半径为 。 绘制中心位于世界坐标系原点的实心立方体和线框立方体, 绘制中心位于世界坐标系原点的实心立方体和线框立方体,立方体 3 的半径为size,size是一个双精度浮点值。 是一个双精度浮点值。 的半径为 , 是一个双精度浮点值 绘制中心位于世界坐标系原点的实心八面体和线框八面体, 绘制中心位于世界坐标系原点的实心八面体和线框八面体,八面体 的半径为1.0。 的半径为 。
2012-5-9
10
OpenGL程序实例——绘制图形
指定窗口背景色( glClearColor) 颜色管理,使用RGB颜色模型。一种颜色用红、绿、 蓝三种颜色成分混合而成,每种颜色成分使用0.0到 1.0之间的任意有效浮点数来表示颜色值(见下页)。
2012-5-9
11
OpenGL程序实例——绘制图形
一条简化的OpenGL绘制流水线 图2.35 一条简化的 绘制流水线 注意:只有当缓冲区被清空时,缓冲区中的命令和数据才会传递给流水 线的下一个阶段,OpenGL命令才会得到执行。
2012-5-9 5
OpenGL的基本语法——相关库
OpenGL核心库:gl OpenGL实用程序库: glu OpenGL编程辅助库:aux 115个函数 43个函数 31个函数
第二章 2.6 OpenGL图形软件包
OpenGL的主要功能 OpenGL的绘制流程 OpenGL的基本语法 OpenGL的程序实例
2012-5-9
1
OpenGL图形软件包
OpenGL是SGI(Silicon Graphics Inc.)公司对IRIS GL 进行改进,扩展可移植性,形成的一个跨平台开放式图 形编程接口。 目前,OpenGL标准由1992年成立的独立财团OpenGL Architecture Review Board(ARB)以投票方式产生, 并制成规范文档公布。
2012-5-9
内部表示法 8位整数 16位整数 32位整数 32位浮点数 64位浮点数 8位无符号整数 16位无符号整数 32位无符号整数
定义为C类型 定义为 类型 signed char short long float double unsigned char unsigned short unsigned long
2012-5-9
13
第三章
3.4 OpenGL实现橡皮筋技术
橡皮筋技术的实现方法
利用颜色的异或操作,对原有图形并不是擦除, 而是再绘制一条同样的直线段并与原图形进行 异或操作,此时原图形会从屏幕上消失; 利用双缓存技术,绘制图形时分别绘制到两个 缓存,交替显示。
2012-5-9
14
OpenGL实现橡皮筋技术
2012-5-9
9
OpenGL程序实例——窗口管理
初始化(glutInit ) 创建窗口(glutCreateWindow) 设定窗口的显示模式(glutInitDisplayMode) 指定窗口的位置和大小(glutInitWindowPosition和 glutInitWindowSize ) 指定窗口的显示内容函数(glutDisplayFunc) 运行框架(glutMainLoop)
2012-5-9
17
OpenGL实现拾取操作
名字堆栈操作 初始化名字堆栈(glInitNames) 将一个名字压入堆栈(glPushName) 替换名字堆栈的栈顶元素(glLoadName) 将栈顶元素弹出(glPopN8
OpenGL实现拾取操作
设置合适的变换过程 gluPickMatrix(xPick,yPick,widthPick, heightPick,*vp); 为每个图元分配名字并绘制 切换回渲染模式 分析选择缓冲区中的数据
glutSolidDodecahedron( ) 绘制中心位于世界坐标系原点的实心 面体和线框 面体,12面体 绘制中心位于世界坐标系原点的实心12面体和线框 面体, 面体 面体和线框12面体 3 glutWireDodecahedron( ) 的半径为 。 glutSolidIcosahedron( ) glutWireIcosahedron( )
2012-5-9
24 24
OpenGL中的实体模型函数 OpenGL中的实体模型函数
绘制实体或线框圆环
void glutSolidTorus/ glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint slices,GLint stacks);
C字面值后缀 字面值后缀 B S L F D Ub Us Ui
8
OpenGL程序实例——头文件包含
利用OpenGL实现图形绘制,首先要引入OpenGL核心 库以及其他需要使用的库的头文件。 glut保证了gl.h和glu.h被正确包含。 #include <gl/glut.h> #include <windows.h>
鼠标实现
鼠标响应函数 glutMouseFunc 鼠标移动相应函数 glutMotionFunc glutPassiveMotionFunc
2012-5-9 15
OpenGL实现橡皮筋技术
键盘实现
键盘相应函数 glutKeyboardFunc
2012-5-9
16
3.5 OpenGL实现拾取操作
设置拾取缓冲区 void glSelectBuffer(GLsizei n,GLunint *buff); 进入选择模式 GLint glRenderMode(GLenum mode);
图2.34 OpenGL图形处理系 图形处理系 统在计算机系统中的层次结构
2012-5-9 4
OpenGL的绘制流程——流水线
包括命令、顶点数据和纹理等数据的OpenGL命令将放在命令 缓冲区中,对几何顶点数据进行必要的变换、光照计算并进行 投影后进入光栅化流程,根据几何形状、颜色及纹理数据生成 图像的帧缓存地址和像素点值,结果置入帧缓冲存储器中。
void glutSolidSphere/glutWireSphere (GLdouble radius, GLint slices, GLint stacks);
绘制实体或线框圆锥面
void glutSolidCone/glutWireCone (GLdouble radius, GLdouble height, GLint slices, GLint stacks);
2012-5-9
19 19
3.6 OpenGL中的菜单功能
菜单注册函数 glutCreateMenu(ProcessMenu); 在菜单中加入菜单项 void glutAddMenuEntry(char *name, GLint value); 将菜单与某个鼠标按键关联 void glutAttachMenu(button);
表2.2 OpenGL的一些常用混合色 的一些常用混合色
混合色 黑 红 绿 黄 蓝 紫 青 深灰 浅灰 棕 南瓜橙 粉红 紫红 白 红色成分(R) 0.0 1.0 0.0 1.0 0.0 1.0 0.0 0.25 0.75 0.60 0.98 0.98 0.60 1.0 绿色成分(G) 0.0 0.0 1.0 1.0 0.0 0.0 1.0 0.25 0.75 0.40 0.625 0.04 0.40 1.0 蓝色成分(B) 0.0 0.0 0.0 0.0 1.0 1.0 1.0 0.25 0.75 0.12 0.12 0.70 0.70 1.0
2012-5-9 20
第四章 OpenGL中层次模型的实现
显示列表的创建 glNewList( listID, listMode ); glutSolidCube(2.0); …… glEndList(); 显示列表的执行 void glListBase(GLuint offsetValue);
2012-5-9 21
OpenGL实用程序工具包(OpenGL utility toolkit, GLUT):glut 30多个函数 Windows专用库:wgl 6个函数
2012-5-9