OpenGL glutDisplayFunc()函数

glutDisplayFunc()的使用方式是glutDisplayFunc(&display);

void display(void)函数为绘图函数。

glutDisplayFunc()是glut中很重要的函数,使用非常简单。

重点是对这个函数的理解:

glutDisplayFunc(&display)在程序运行时是自动调用的,即程序会自动调用display函数重绘窗口

调用的时机有这么几个:

1.  窗口内容绘制

2.   窗口大小改变

3.   窗口重绘

当然,这个函数不会单独出现,比如 :

glutReshapeFunc(&reshape); 函数先控制窗口大小改变时的操作,

 

glutIdelFunc(&IdleFunc); 函数再控制窗口有无事件发生时的操作,
完成上述操作之后,glut才会调用glutDisplayFunc(&display)绘制窗口。

 

  • 9
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include #include "stdafx.h" #define GLUT_DISABLE_ATEXIT_HACK #include //#pragma comment(lib, "glut32.lib") GLfloat AngleX;//旋转向量 GLfloat AngleY; void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); //这个函数其实就是对接下来要做什么进行一下声明 GL_MODELVIEW 模型视图 glLoadIdentity(); glPushMatrix();// 提供了相应的接口 { glRotatef(AngleX, 1.0f, 0.0f, 0.0f); glRotatef(AngleY, 0.0f, 1.0f, 0.0f); glBegin(GL_POLYGON); //前表面 glColor3f(1.0f,1.0f,1.0f);//颜色设置为白色 glVertex3f(50.0f, 50.0f, 50.0f); glColor3f(1.0f,1.0f,0.0f);//颜色设置为黄色 glVertex3f(50.0f, -50.0f, 50.0f); glColor3f(1.0f,0.0f,0.0f);//颜色设置为红色 glVertex3f(-50.0f, -50.0f, 50.0f); glColor3f(1.0f,0.0f,1.0f);//颜色设置为品红色 glVertex3f(-50.0f, 50.0f, 50.0f); glEnd(); glBegin(GL_POLYGON); //后表面 glColor3f(0.0f, 1.0f, 1.0f);//颜色设置为青色 glVertex3f(50.0f, 50.0f, -50.0f); glColor3f(0.0f, 1.0f, 0.0f);//颜色设置为绿色 glVertex3f(50.0f, -50.0f, -50.0f); glColor3f(0.0f, 0.0f, 0.0f);//颜色设置为黑色 glVertex3f(-50.0f, -50.0f, -50.0f); glColor3f(0.0f, 0.0f, 1.0f);//颜色设置为蓝色 glVertex3f(-50.0f, 50.0f, -50.0f); glEnd(); glBegin(GL_POLYGON); //右表面 glColor3ub((GLubyte)255, (GLubyte)255, (GLubyte)255);//颜色设置为白色 glVertex3f(50.0f, 50.0f, 50.0f); glColor3f(0.0f, 1.0f, 1.0f);//颜色设置为青色 glVertex3f(50.0f, 50.0f, -50.0f); glColor3f(0.0f, 1.0f, 0.0f);//颜色设置为绿色 glVertex3f(50.0f, -50.0f, -50.0f); glColor3ub((GLubyte)255, (GLubyte)255, (GLubyte)0);//颜色设置为黄色 glVertex3f(50.0f, -50.0f, 50.0f); glEnd(); glBegin(GL_POLYGON); //左表面 glColor3d(0.0, 0.0, 1.0);//颜色设置为蓝色 glVertex3f(-50.0f, 50.0f, -50.0f); glColor3f(0.0f, 0.0f, 0.0f);//颜色设置为黑色 glVertex3f(-50.0f, -50.0f, -50.0f); glColor3ub((GLubyte)255, (GLubyte)0, (GLubyte)0);//颜色设置为红色 glVertex3f(-50.0f, -50.0f, 50.0f); glColor3f(1.0f, 0.0f, 1.0f);//颜色设置为品红色 glVertex3f(-50.0f, 50.0f, 50.0f); glEnd(); glBegin(GL_POLYGON); //上表面 glColor3d(0.0, 1.0, 1.0);//颜色设置为青色 glVertex3f(50.0f, 50.0f, -50.0f); glColor3d(1.0, 1.0, 1.0);//颜色设置为白色 glVertex3f(50.0f, 50.0f, 50.0f); glColor3d(1.0, 0.0, 1.0);//颜色设置为品红色 glVertex3f(-50.0f, 50.0f, 50.0f); glColor3d(0.0, 0.0, 1.0);//颜色设置为蓝色 glVertex3f(-50.0f, 50.0f, -50.0f); glEnd(); glBegin(GL_POLYGON); //下表面 glColor3f(0.0f, 1.0f, 0.0f);//颜色设置为绿色 glVertex3f(50.0f, -50.0f, -50.0f); glColor3ub((GLubyte)255, (GLubyte)255, (GLubyte)0);//颜色设置为黄色 glVertex3f(50.0f, -50.0f, 50.0f); glColor3f(1.0f, 0.0f, 0.0f);//颜色设置为红色 glVertex3f(-50.0f, -50.0f, 50.0f); glColor3f(0.0f, 0.0f, 0.0f);//颜色设置为黑色 glVertex3f(-50.0f, -50.0f, -50.0f); glEnd(); } glPopMatrix(); glutSwapBuffers(); } void reshape(int w, int h) { GLfloat aspect = (GLfloat)w / (GLfloat)h; GLfloat nRange = 100.0f; glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); //将当前矩阵指定为投影模式 glLoadIdentity(); //设置三维投影区 if (w 355.0f) { AngleX = 0.0f; } if (AngleX 355.0f) AngleY = 0.0f; if (AngleY < 0.0f) { AngleY = 355.0f; } glutPostRedisplay(); } void init() { AngleX = 45.0f; AngleY = 315.0f; glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glEnable(GL_DEPTH_TEST); //初始化OpenGL glEnable(GL_DITHER); //抖动是激活的。 glShadeModel(GL_SMOOTH);//两点间颜色有过渡效果 } void main(int argc, char* argv[]) { glutInit(&argc;, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); //使用双缓存 使用深度缓存。 glutInitWindowSize(480, 480); glutCreateWindow("OpenGL颜色立方体"); glutReshapeFunc(reshape); //窗口改变的时候调用的函数 glutDisplayFunc(display); glutSpecialFunc(key_board); //函数注册鼠标响应事件 init(); glutMainLoop(); }
首先感谢各位的下载,这个文档是我自己整理的,由于函数太多,没办法一一详细的添加用法的中文翻译,还望大家见谅,里面写明了是中文分类。 如哪位朋友有中文的用法介绍可以提供给我,让你我一起完善这个中文的翻译工作! 有些朋友说给我骗了,你要知道整理这个文档我花了大量时间。已经非常的不容易了,我找了好多CHM文档都没有一个是我自己想要的。非常痛苦弄出来的!希望大家多多支持!! 中文分类 OpenGL函数汇总 ================================= 目前OpenGL函数主要包含在3个库中 1.GL 函数库 2.GLU 函数库 3.GLUT 函数库 1.GL 库函数 =================================== 颜色编辑 ------------------- glShadeModel 选择平面明暗模式或光滑明暗模式 void glShadeModel(GLenum mode) 参数:mode 指定表示明暗模式的符号值,可选 GL_FLAT 和 GL_SMOOTH ,缺省值为 GL_SMOOTH glColor 设置当前颜色 这是一个家族性质的函数集合,并没有glColor()这个函数。其包含的函数如下: 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 , GLbyte alpha) 参数:red , green , blue 指定当前新的红、绿、蓝的颜色值 alpha 透明度,指明当前新的 alpha 颜色值 ,只有在 glColor4 函数中带4个变量时才会指定此参数。 此外还包括: void glColor3bv(const GLbyte * v) void glColor3dv(const GLdoble * 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) void glColor3usv(const GLushort * v) void glColor4bv(const GLbyte * v) void glColor4dv(const GLdoble * 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) 参数:v 指定一个值向包含红、绿、蓝和 alpha 值的数组指针。 glColorPointer 定义颜色数组 void glColorPointer(GLint size , GLenum type , GLsizei stride , GLsizei count , const GLvoid * pointer) 参数:size 每个颜色的分量数目 ,该值必须是3或4 type 在颜色数组中每个颜色分量的数据类型,可选的数据类型为: GL_BYTE GL_UNSIGNED_BYTE GL_SHORT GL_UNSIGNED_SHORT GL_INT GL_UNSIGNED_INT GL_FLOAT GL_UNSIGNED_FLOAT stride 相邻两个颜色的字节偏移量。当stride为零时 ,颜色值在数组中是一个接一个排列的。 count 静态颜色的数目 ,从第一个颜色开始计数。 pointer 指向颜色数组中第一个颜色元素中第一个分量的指针。 glIndex 设置当前颜色索引 void glIndexd(GLdouble c) void glIndexf(GLfloat c) void glIndexi(GLint c) void glIndexs(GLshort c) 参数: c 新的当前颜色索引值 void glIndexdv(GLdouble * c) void glIndexfv(GLfloat * c) void glIndexiv(GLint * c) void glIndexsv(GLshort * c) 参数: c 指向一个由单个元素组成的数组指针 ,该数组中包含新的当前颜色索引值。 glIndexPointer 定义颜色索引数组 void glIndexPointer(GLenum type ,GLsizei stride ,GLsizei count ,const GLvoid *pointer) 参数:type 数组中每个颜色索引的数据类型 ,可以选择的符号常数为:GL_SHORT GL_INT GL_FLOAT GL_DOUBLE stride 相邻的两个颜色索引的字节偏移量。当stride为零时 ,颜色索引值在数组中是一个接一个排列的。 count 颜色索引的数目,从第一个颜色开始计数 ,它们是静态的。 pointer 指向颜色数组中第一个颜色索引的指针。 glColorTableEXT 为目标调色板纹理指定调色板的格式和大小 void glColorTableEXT(GLenum target ,GLenum internalFormat ,GLsizei width ,GLenum format ,GLenum type ,const GLvoid *data) 参数:target 需要更改调色板的目标纹理 ,必须为 TEXTURE_1D TEXTURE_2D PROXY_TEXTURE_1D PROXY_TEXTURE_2D intenalFormat (等待编辑) width 调色板的大小 ,对于某些 n ,必须满足 2n>=1 . format (等待编辑) type data的数据类型 ,可选以下符号常量: GL_UNSIGNED_BYTE GL_BYTE GL_UNSIGNED_SHORT GL_SHORT GL_UNSIGNED_INT GL_INT GL_UNSIGNED_FLOAT GL_FLOAT data 指向调色板纹理数据的指针。对于调色板项目 ,数据作为一维纹理调色板项目中的单个像素进行处理。 glColorSubTableEXT 指定需要替代的目标纹理调色板的一部分 void glColorSubTableEXT(GLenum target ,GLsizei start ,GLsizei count ,GLenum format ,GLenum type ,const GLvoid * data) 参数:target 需要更改调色板的目标纹理 ,必须为 TEXTURE_1D TEXTURE_2D PROXY_TEXTURE_1D PROXY_TEXTURE_2D start 被改变的调色板的起始调色板索引项目。 count 被改变的调色板中从 start 开始的调色板索引项目的数目。count参数确定了被改变的调色板中调色板索引项目的范围。 format (等待编辑) type data的数据类型 ,可选以下符号常量: GL_UNSIGNED_BYTE GL_BYTE GL_UNSIGNED_SHORT GL_SHORT GL_UNSIGNED_INT GL_INT GL_UNSIGNED_FLOAT GL_FLOAT data 指向调色板纹理数据的指针。对于调色板项目 ,数据作为一维纹理调色板项目中的单个像素进行处理。 绘制几何图形 ----------------------------- glVertex glVertexPointer glArrayElement glBegin , glEnd glEdgeFlag , glEdgeFlagv glPointSize glLineWidth glLineStipple glPolygonMode glFrontFace glPolygonStipple glDrawElements glRect 坐标转换 ----------------------------- glTranslate glRotate glScale glViewPoint glFrustum glOrtho glClipPlane 堆栈操作 ------------------------------ glLoadMatrix glMultMatrix glMatrixMode glPushMatrix , glPopMatrix glPushAttrib , glPopAttrib glPushName , glPopName glInitName glLoadName 1.GL 函数库(续) =============================== 显示列表 ----------------------------- glNewList , glEndList glCallList glCallLists glGenLists glDeleteLists glIsList 使用光照和材质 ----------------------------- glNormal glNormalPointer glLight glLightModel glMaterial glColorMaterial 像素操作 ------------------------------ glRasterPos glBitmap glReadPixels glDrawPixels glCopyPixels glCopyTexImage1D glCopyTexImage2D glCopyTexSubImage1D glCopyTexSubImage2D glPixelZoom glPixelStore glPixelTransfer glPixelMap 纹理映射 ----------------------------- glTexImage1D glTexImage2D glTexParameter glTexSubImage1D glTexSubImage2D glTexEnv glTexCoord glTexGen glTexCoordPointer glDeleteTextures 特效操作 ---------------------------- glBlendFunc glHint glFog 1.GL 库函数(续2) ============================= 帧缓存操作 ----------------------------- glClear glClearAccum glClearColor glClearDepth glClearIndex glClearStencil glDrawBuffer glIndexMask glColorMask glDepthMask glStencilMask glAlphaFunc glStencilFunc glStencilOp glDepthFunc glDepthRange glLogicOp glAccum 曲线或曲面绘制 ------------------------------ glEvalCoord glMap1 glMap2 glMapGrid glEvalMesh glEvalPoint 查询函数 ----------------------------- glGet glGetClipPlane glGetColorTableEXT glGetColorTableParameterfvEXT , glGetColorTableParameterivEXT glGetError glGetLight glGetMap glGetMaterial glGetPixelMap glGetPointerv glGetPolygonStipple glGetString glGetTexEnv glGetTexImage glGetTexLevelParameter glGetTexParameter 2.GLU 库函数 ============================ 绘制 NURBS 曲线和曲面 ------------------------------ gluNewNurbsRenderer gluNurbsProperty gluNurbsCallback gluBeginCurve , gluEndCurve gluNurbsCurve gluDeleteNurbsRenderer gluBeginSurface , gluEndSurface gluNurbsSurface gluBeginTrim , gluEndTrim gluPwlCurve gluBeginPolygon , gluEndPolygon gluPickMatrix 绘制二次几何物体 --------------------------------- gluNewQuadric gluQuadricDrawStyle gluQuadricNormals gluQuadricOrientation gluCylinder gluSphere gluDisk gluPartialDisk gluDeleteQuadric gluQuadricTexture gluQuadricCallback 网格化 ------------------------------ gluNewTess gluTessVertex gluTessCallback gluTessBeginPolygon , gluTessEndPolygon gluTessBeginContour , gluTessBeginContour gluTessProperty gluNextContour gluTessNormal gluDeleteTess 坐标转换 ------------------------------ gluOrtho2D gluPerspective gluLookAt gluProject gluUnProject 多重映射 ------------------------------ gluBuild1DMipmaps gluBuild2DMipmaps gluScaleImage 查询函数 ----------------------------- gluErrorString gluGetNurbsProperty gluGetString gluGetTessProperty 3.GLUT函数 ============================= 初始化和启动事件处理 ------------------------- glutInit glutInitWindowPosition glutInitWindowSize glutInitDisplayMode glutMainLoop 窗口管理 ------------------------- glutCreateWindow glutCreateSubWindow glutHideWindow glutShowWindow glutSetWindowTitle glutPostRedisplay glutSwapBuffers glutFullScreen glutPositionWindow glutReshapeWindow glutSetWindow glutGetWindow glutPopWindow glutPushWindow glutDestroyWindow glutIconifyWindow glutSetCursor 重叠层管理 ------------------------- glutEstablishOverlay glutUseLayer glutRemoveOverlay glutPostOverlayRedisplay glutShowOverlay glutHideOverlay 菜单管理 ------------------------- glutCreateMenu glutAddMenuEntry glutAddSubMenu glutAttachMenu glutGetMenu glutSetMenu glutDestroyMenu glutChangeToMenuEntry glutChangeToSubMenu glutRemoveMenuItem glutDetachMenu 3.GLUT函数(续) =============================== 注册回调函数 ------------------------------- glutDisplayFunc glutReshapeFunc glutMouseFunc glutMotionFunc glutIdleFunc glutVisibilityFunc glutKeyboardFunc glutSpecialFunc glutOverlayDisplayFunc glutPassiveMotionFunc glutEntryFunc glutSpaceballMotionFunc glutSpaceballRotateFunc glutSpaceballButtonFunc glutButtonBoxFunc glutDialsFunc glutTableMotionFunc glutTableButtonFunc glutMenuStatusFunc glutTimerFunc 颜色索引映射表管理 ------------------------------- glutSetColor glutGetColor glutCopyColormap 状态检索 ------------------------------- glutGet glutLayerGet glutDeviceGet glutGetModifiers glutExtensionSupported 字体绘制 ------------------------------- glutBitmapCharacter glutBitmapWidth glutStrokeCharacter glutStrokeWidth 几何图形绘制 ------------------------------- glutSolidSphere , glutWireSphere glutSolidCube , glutWireCube glutSolidCone , glutWireCone glutSolidTorus , glutWireTorus glutSolidDodecahedron , glutWireDodecahedron glutSolidOctahedron , glutWireOctahedron glutSolidTetrahedron , glutWireTetrahedron glutSolieIcosahedron , glutWireIcosahedron glutSolidTeapot , glutWireTeapot
贵州大学实验报告 学院:计算计科学与信息学院 专业: 班级: "姓名 " "学号 " "实验组 " " "实验时间 " "指导教师 " "成绩 " " "实验项目名称 "基本图元生成 " "实 "1、掌握opengl头文件的使用和语法规则 " "验 "2、opengl程序的基本结构和程序运行环境配置 " "目 "3、掌握使用opengl函数绘制基本图元,如点、线、封闭的多边形等。" "的 " " "实 " 学会如何在vc++6.0中配置opengl的运行环境 " "验 " " "要 " " "求 " " "实 "在visual c++编程环境中编写程序源代码,并编译、运行程序结果 " "验 " " "原 " " "理 " " "实 "奔腾2计算机或以上机型、visual c++编程环境 " "验 " " "仪 " " "器 " " "实 "1.OpenGL环境设置 " "验 "将OpenGL所需函数库和头文件复制到指定目录. " "内 "将压缩包内的glut.h放到...\Microsoft Visual " "容 "Studio\VC98\Include\GL目录下 " " "将glut32.lib放到...\Microsoft Visual Studio\VC98\Lib目录下 " " "将glut32.dll放到X:\windows\systom32目录下(win98用户放到X:\wi" " "ndows\systom目录下 " " "2.通过vc++编译运行画出点、直线、几何图形等。 " " " " "实 "1.找到vc++的安装路径...\Microsoft Visual " "验 "Studio\VC98\Include\GL目录,然后将压缩包里的glut.h文件复制一 " "步 "份到该目录下。 " "骤 "2.找到vc++的安装路径..\Microsoft Visual " " "Studio\VC98\Lib目录下,然后将glut32.lib放到该目录下。 " " "3.找到路径windows\systom32目录,然后将glut32.dll文件复制一份 " " "到该目录下。 " " "4. " " "OpenGL环境设置好后就可以开始编写程序了,接下来就是打开vc++编 " " "辑器,在编辑器里输入如下代码: " " "#include<windows.h> " " "#include<GL/gl.h> " " "#include<GL/glut.h> " " "#include<stdio.h> " " " " " "void myinit(void); " " "void display(void); " " " " " "void init(void) " " "{ " " "glClearColor(0.0,0.0,0.0,1.0); " " "} " " "void display(void) " " "{ " " "glClear(GL_COLOR_BUFFER_BIT); " " "glColor4f(0.5,0.2,1.0,0.8); " " "glPointSize(5.0); " " " " " "glBegin(GL_POINTS); " " "glVertex3f(0.1,0.5,0.0); " " "glVertex3f(0.4,0.7,0.0); " " "glVertex3f(0.6,0.2,0.0); " " "glEnd(); " " "glFlush(); " " " " " "} " " " " " "void main(int argc,char** argv) " " "{ " " "glutInit(&argc,argv); " " "glutInitDisplayMode(GLUT_SINGLE"GLUT_RGB); " " "glutInitWindowPosition(50,100); " " "glutInitWindowSize(800,600); " " "glutCreateWindow("the first openglsample"); " " " " " "init(); " " "glutDisplayFunc(display); " " "glutMainLoop(); " " "} " " "3.单击"启动调试"按钮后可在屏幕上看到生成的点的图案 " " "4.接着在void display(void)函数里面依次输入下面代码编译后可看 " " "到相应的图案 " " "5. glBegin(GL_LINES); " " "glVertex3f(0.1,0.2,0.0); " " "glVertex3f(0.5,0.9,0.0); "
计算机图形学实验报告 21 计算机图形学实验报告全文共48页,当前为第1页。计算机图形学实验报告全文共48页,当前为第1页。 计算机图形学实验报告全文共48页,当前为第1页。 计算机图形学实验报告全文共48页,当前为第1页。 计算机图形学实验报告 姓名: 学号: 班 级: 专业: 计算机科学与技术 完成日期: 2017.1.3 计算机图形学实验报告全文共48页,当前为第2页。计算机图形学实验报告全文共48页,当前为第2页。 计算机图形学实验报告全文共48页,当前为第2页。 计算机图形学实验报告全文共48页,当前为第2页。 目录 实验一 OpenGL图形编程 3 1. 实验目的 3 2. 实验内容 3 3. 实验代码与实验结果 4 (1) 画矩形 4 (2) 画点 6 (3) 画直线 7 (4) 画等边三角形 8 实验二 直线绘制实验 9 1. 实验目的和实验内容 9 2. 实验代码和实验结果 9 (1) 掌握数值微分算法编程绘制直线 9 (2) 掌握中点画线算法编程绘制直线 12 (3) 掌握Bresenham算法编程绘制直线 13 实验三 圆绘制实验 16 1. 实验目的和实验内容 16 2. 实验代码实验结果 16 (1) 实现八分法画圆程序 16 (2) 实现 Bresenham 算法绘制圆 18 (3) 实现中点Bresenham 算法绘制椭圆 22 实验四 填充算法实验 26 1. 实验目的 26 2. 实验内容 26 3. 实验代码和实验结果 27 实验五 裁剪算法实验 37 1. 实验目的和实验内容 37 2. 实验代码和实验结果 37 计算机图形学实验报告全文共48页,当前为第3页。计算机图形学实验报告全文共48页,当前为第3页。实验一 OpenGL图形编程 计算机图形学实验报告全文共48页,当前为第3页。 计算机图形学实验报告全文共48页,当前为第3页。 实验目的 点的绘制 直线的绘制 多边形面的绘制 实验内容 点的绘制 glBegin(GL_POINTS); glVertex3f(0.0f, 0.0f, 0.0f); glVertex3f(10.0f, 0.0f, 0.0f); glEnd(); 点的属性(大小) void glPointSize(GLfloat size); 直线的绘制模式 GL_LINES GL_LINE_STRIP GL_LINE_LOOP 直线的属性 线宽 void glLineWidth(GLfloat width) 计算机图形学实验报告全文共48页,当前为第4页。计算机图形学实验报告全文共48页,当前为第4页。线型 计算机图形学实验报告全文共48页,当前为第4页。 计算机图形学实验报告全文共48页,当前为第4页。 glEnable(GL_LINE_STIPPLE); glLineStipple(GLint factor,GLushort pattern); 三角形面的绘制 GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN 四边形面的绘制 GL_QUADS GL_QUADS_STRIP 多边形面的绘制(GL_POLYGON) 多边形面的绘制规则 所有多边形都必须是平面的。 多边形的边缘决不能相交,而且多边形必须是凸的。 解决:对于非凸多边形,可以把它分割成几个凸多边形(通常是三角形),再将它绘制出来。 实验代码与实验结果 画矩形 #include <gl/glut.h> void Initial(void){ glClearColor(1.0f,1.0f,1.0f,1.0f); 计算机图形学实验报告全文共48页,当前为第5页。计算机图形学实验报告全文共48页,当前为第5页。 glMatrixMode(GL_PROJECTION); 计算机图形学实验报告全文共48页,当前为第5页。 计算机图形学实验报告全文共48页,当前为第5页。 gluOrtho2D(0.0,200.0,0.0,150.0); } void Display(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f,0.0f,0.0f); glRectf(50.0f,100.0f,150.0f,50.0f); glFlush(); } int main(int argc,char*argv[]){ glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE"GLUT_RGB); glutInitWindowSize(400,300); glutInitWindowPosition(100,120); glutCreateWindow("矩形"); glutDisplayFunc(
//样本程序: 旋转的六边形 #include "stdafx.h" #include #include #define PI 3.14159 //设置圆周率 int n=6, R=10; //多边形变数,外接圆半径 float theta=0.0; //旋转初始角度值 void Keyboard(unsigned char key, int x, int y); void Display(void); void Reshape(int w, int h); void myidle(); int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); char *argv[] = {"hello ", " "}; int argc = 2; // must/should match the number of strings in argv glutInit(&argc;, argv); //初始化GLUT库; glutInitWindowSize(700,700); //设置显示窗口大小 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); //设置显示模式;(注意双缓冲) glutCreateWindow("A Rotating Square"); // 创建显示窗口 glutDisplayFunc(Display); //注册显示回调函数 glutReshapeFunc(Reshape); //注册窗口改变回调函数 glutIdleFunc(myidle); //注册闲置回调函数 glutMainLoop(); //进入事件处理循环 return 0; } void Display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,0,0); //设置红色绘图颜色 glBegin(GL_POLYGON); //开始绘制六边形 for (int i=0;i=2*PI) theta-=2*PI; glutPostRedisplay(); //重画,相当于重新调用Display(),改编后的变量得以传给绘制函数 } void Reshape(GLsizei w,GLsizei h) { glMatrixMode(GL_PROJECTION); //投影矩阵模式 glLoadIdentity(); //矩阵堆栈清空 gluOrtho2D(-1.5*R*w/h,1.5*R*w/h,-1.5*R,1.5*R); //设置裁剪窗口大小 glViewport(0,0,w,h); //设置视区大小 glMatrixMode(GL_MODELVIEW); //模型矩阵模式 }
### 回答1: glutdisplayfunc(display)是一个函数,它用于注册一个回调函数,当窗口需要重新绘制时,该函数将被调用。其中,display是一个函数指针,指向一个用户定义的函数,用于绘制场景。在该函数中,可以使用OpenGL的绘图函数来绘制图形。 ### 回答2: glutDisplayFunc(display)是GLUT库中的一个函数,它是用于指定OpenGL绘图函数的回调函数。该函数接受一个回调函数作为参数,当窗口需要重绘时,该回调函数将被调用,从而使OpenGL图形界面得以更新。 在使用glutDisplayFunc(display)时,需要定义一个回调函数来实现绘图功能。该回调函数需要调用OpenGL库来创建数学坐标系、绘制几何图形、渲染纹理等操作,最后产生与窗口对应的图形。回调函数的形参通常包括窗口宽度和高度,以便绘图时能够正确计算坐标和大小。 常见的绘制函数包括glBegin()、glEnd()、glVertex3f()、glColor4f()等。glBegin()和glEnd()之间的代码用于指定一个简单的几何图形,例如点、直线、多边形等,并指定其颜色、边框等属性。glVertex()、glColor()等函数用于指定要绘制形状的特定坐标、颜色等参数。 除了glutDisplayFunc(display),GLUT库中还提供了其他回调函数,如glutReshapeFunc(reshape)、glutKeyboardFunc(keyboard)、glutMouseFunc(mouse)等,分别用于处理窗口重塑、键盘按键、鼠标事件等。在使用这些函数时,需要定义相应的回调函数,并将其传递给GLUT库。 总而言之,glutDisplayFunc(display)是一个非常重要的函数,它为创建和绘制OpenGL图形界面提供了基础。在使用这个函数时,需要了解OpenGL库中的基本绘图函数和回调函数的使用方法,以便能够正确地创建和管理OpenGL图形界面。 ### 回答3: glutdisplayfunc(display)是一个OpenGL函数,它被用于向GLUT图形窗口中绘制图像并定义窗口的渲染行为。当窗口需要重新绘制时,GLUT会调用该函数。 在使用glutdisplayfunc(display)函数时,我们需要定义一个新的函数display(),用于实现窗口的渲染行为。display()函数通常会被调用多次,以实现动画、交互等功能。 在display()函数中,我们可以使用OpenGL的各种函数和指令来绘制图形。例如,我们可以使用glBegin(GL_POLYGON)和glVertex3f(x,y,z)等函数来绘制多边形形状的图象,也可以使用glColor3f(r,g,b)函数来设置图形的颜色属性。除此之外,我们还可以使用平移、旋转和缩放等变换函数来改变图形的大小和方向。所有这些函数都将在display()函数中使用。 通过使用glutdisplayfunc(display)函数和定义相应的display()函数,我们可以完全掌控窗口中的渲染行为。这意味着我们可以通过改变参数、添加新的图形和调整图形的位置等方式,实现各种复杂的图形效果。因此,glutdisplayfunc(display)函数OpenGL编程中是一种非常重要的函数,掌握和运用它将能够让我们在OpenGL的基础上构建出更为精彩的图形和应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值