FreeGlut使用指南

        大部分的函数可以根据名称分辨作用:主要是几个大类

        已经添加了几个新的回调,并且还没有实现Silicon Graphics硬件特有的几个回调。大多数或所有新回调都列在GLUT版本4的“GLUT.h”头文件中,但没有出现在文档中。新回调包括常规和特殊键释放回调、操纵杆回调、菜单状态回调(有一个参数,与有三个参数的菜单状态回调不同)、窗口状态回调(也有一个变量)和窗口位置回调。不支持的回调是两个Tablet回调。如果用户需要不受支持的回调,他应该联系freeglut开发团队。

        添加了新的函数来呈现完整的字符串(包括回车),而不是一次呈现一个字符。更多的函数返回字符串的宽度和字体高度,位图字体以像素为单位,笔划字体以OpenGL为单位。

        添加了两个功能来渲染线框和实心菱形十二面体。此外,著名的纽厄尔茶壶附带的原装茶杯和茶匙的实体和线框版本。由于这些几何函数经常用于教学目的,因此现在可以使用glutSetOption(GLUT_geometry_VISUALIZE_NORMALS,true/false)来可视化每个顶点的法向量。最后,为了支持使用着色器绘制这些对象,添加了三个函数,用户可以通过这些函数提供“坐标”、“法线”和“纹理坐标”顶点属性的地址:glutSetVertexAttribCoord3、glutSetVerexAttripNormal和glutSetVitexAttritTexCoord2。纹理坐标仅为摘要生成。 

Initialization Functions

        glutInit

        glutInitWindowPosition

         glutInitWindowSize

        glutInitWindowPosition和glutInitTindowSize函数为freeglut将来创建的窗口指定所需的位置和大小。

        glutInitDisplayMode

        glutInitDisplayString

        glutInitErrorFunc

        glutInitWarningFunc

Event Processing Functions

        glutMainLoop:glutMainLoop函数进入事件循环。

        glutMainLoopEvent:glutMainLoopEvent函数处理freeglut事件循环中的单个迭代。

        glutLeaveMainLoop:glutLeaveMainLoop函数导致freeglut停止其事件循环。

Window Functions

        glutCreateWindow

        glutCreateSubwindow

        glutDestroyWindow

        glutSetWindow

        glutGetWindow

        glutSetWindowTitle

        glutSetIconTitle

        glutReshapeWindow

        glutPositionWindow

        glutShowWindow

        glutHideWindow

        glutIconifyWindow

        glutPushWindow

        glutPopWindow

        glutFullScreen

        glutLeaveFullScreen

        glutFullScreenToggle

Display Functions

        glutPostRedisplay

        glutPostWindowRedisplay

        glutSwapBuffers

Mouse Cursor Functions

        glutSetCursor

        glutWarpPointer

Overlay Functions

        glutEstablishOverlay

        glutRemoveOverlay

        glutUseLayer

        glutPostOverlayRedisplay

        glutPostWindowOverlayRedisplay

        glutShowOverlay,

        glutHideOverlay

Menu Functions

        glutCreateMenu

        glutDestroyMenu

        glutGetMenu

        glutSetMenu

        glutAddMenuEntry

        glutAddSubMenu

        glutChangeToMenuEntry

        glutChangeToSubMenu

        glutSetMenuFont

        glutRemoveMenuItem

        glutAttachMenu

        glutDetachMenu

        glutMenuDestroyFunc

Global Callback Registration Functions

        回调函数设置

        glutTimerFunc

        glutIdleFunc

        glutMenuStatusFunc

        glutMenuStateFunc

Window-Specific Callback Registration Functions

        回调函数设置

        glutDisplayFunc

        glutOverlayDisplayFunc

        glutReshapeFunc

        glutPositionFunc

        glutCloseFunc

        glutKeyboardFunc

       glutSpecialFunc

        glutKeyboardUpFunc

        glutSpecialUpFunc

        glutMotionFunc

        glutPassiveMotionFunc

        glutMouseFunc

        glutMouseWheelFunc

        glutEntryFunc

        glutJoystickFunc

       glutSpaceballMotionFunc

        glutSpaceballRotateFunc

        glutSpaceballButtonFunc

        glutButtonBoxFunc

        glutDialsFunc

        glutTabletMotionFunc

        glutTabletButtonFunc

        glutVisibilityFunc

        glutWindowStatusFunc

State Setting and Retrieval Functions

        glutSetOption:允许您设置一些常规状态/选项变量。

        glutGet:可以使用glutGet查询以下状态变量。返回的值是一个整数。

        glutDeviceGet

        glutGetModifiers

        glutLayerGet

        glutExtensionSupported

        glutGetProcAddress:glutGetProcAddress返回一个指向命名GL或freeglut函数的指针。

Font Rendering Functions

        freeglut支持两种类型的字体渲染:使用glBitmap函数调用渲染的位图字体和渲染为OpenGL线段序列的笔划字体。因为它们被渲染为位图,所以位图字体往往比笔划字体渲染得更快,但在缩放和渲染方面灵活性较差。位图字体字符通过调用glRasterPos*函数来定位,而笔划字体字符则使用OpenGL转换来定位字符。

        需要注意的是,freeglut字体与GLUT字体相似,但并不完全相同。目前,freeglut字体不支持“`”(后引号)和“|”(竖线)字符;在它们的位置上,它会显示星号。

        freeglut支持以下位图字体:

        GLUT_BITMAP_8_BY_13-可变宽度字体,每个字符都适合13像素高、最多8像素宽的矩形。

        GLUT_BITMAP_9_BY_15-可变宽度字体,每个字符都适合15像素高、最多9像素宽的矩形。

        GLUT_BITMAP_TIMES_ROMAN_10-10点可变宽度TIMES ROMAN字体。

        GLUT_BITMAP_TIMES_ROMAN_24-一种24点可变宽度的TIMES ROMAN字体。

        GLUT_BITMAP_HELVETICA_10-一种10点可变宽度的HELVETICA字体。

        GLUT_BITMAP_HELVETICA_12-一种12点可变宽度的HELVETICA字体。

        GLUT_BITMAP_HELVETICA_18-一种18点可变宽度的HELVETICA字体。

        freeglut调用glRasterPos4v将光标前移一个字符的宽度,并在适当的时候渲染回车。它不使用任何显示列表以位图字体进行渲染。

        freeglut支持以下笔划字体:GLUT_STROKE_ROMAN-按比例分隔的罗马单工字体;

        GLUT_STROKE_MONO_ROMAN-固定宽度的罗马单工字体

        freeglut在绘制笔划字体时不使用任何显示列表。它调用glTranslatef将光标前移一个字符的宽度,并在适当的时候呈现回车。

        glutBitmapCharacter:glutBitmapCharacter函数使用指定的字体在当前窗口中渲染单个位图字符。

        glutBitmapString

        glutBitmapWidth

        glutBitmapLength

        glutBitmapHeight

        glutStrokeCharacter

        glutStrokeString

        glutStrokeWidth

        glutStrokeWidthf

        glutStrokeLength

        glutStrokeLengthf

        glutStrokeHeight

Geometric Object Rendering Functions

        freeglut包含22个例程,用于生成易于识别的三维几何对象。这些例程实际上与GLUT库中包含的例程相同,并反映了OpenGL程序员指南中描述的辅助工具包中可用的功能。它们允许程序员用一行代码创建一个三维对象,该对象可用于测试OpenGL的各种功能。没有一个例程为它绘制的对象生成显示列表。这些函数生成适用于照明的法线,但除茶壶函数外,不生成纹理坐标。请注意,应启用深度测试(GL_LESS)以正确绘制非凸对象,即glutTorus、glutSierpinskiPonge、glutTeapot、glutTaicup和glutTeaspoon。

        另请参阅可以使用glutSetOption设置的GLUT_GEOMETRY_VISUALIZE_NORMALS选项。最后,如果要将这些对象与着色器一起使用,请参见glutSetVertexAttribCoord3、glutSetVitexAttrifNormal和glutSetVerexAttripTexCoord2。

        glutWireSphere, glutSolidSphere分别绘制线框和实体球体。

        glutWireTorus, glutSolidTorus分别绘制线框和实心圆环(圆环形状)。

        glutWireCone, glutSolidCone分别绘制线框和实体圆锥体。

        glutWireCube, glutSolidCube分别绘制线框和实心立方体。

        glutWireTetrahedron, glutSolidTetrahedron分别绘制线框和实体四面体(四边柏拉图实体)。

        glutWireOctahedron, glutSolidOctahedron分别绘制线框和实体八面体(八面柏拉图体)。

        glutWireDodecahedron, glutSolidDodecahedron分别绘制线框和实心十二面体(十二面柏拉图体)。

        glutWireIcosahedron, glutSolidIcosahedron分别绘制线框和实体二十面体(二十面柏拉图体)。

        glutWireRhombicDodecahedron, glutSolidRhombicDodecahedron分别绘制线框和实心菱形十二面体(十二面半规则实心)。

        glutWireTeapot和glutSolidTeapot函数分别绘制线框和实心茶壶,glutWireTeacup和glutSulidTeacup函数分别绘制一个线框和一个实心茶壶,glutWireTeaspoon和glutSsolidteaspoon函数分别绘制了一个线框图和一个实体茶壶。

        glutSetVertexAttribCoord3, glutSetVertexAttribNormal, glutSetVertexAttribTexCoord2。

        要使用着色器(OpenGL 2及更高版本)绘制形状,需要将顶点和相关的法线向量以及纹理坐标上载到着色器的顶点属性。在调用上述几何体函数之前,使用这些函数可以设置当前活动着色器中顶点属性的索引(地址),freeglut将在那里上载对象几何体。纹理坐标仅为茶壶、茶杯和茶匙生成。

Game Mode Functions

        glutGameModeString:指定进入GameMode时应进入的显示模式。默认为显示器的当前显示模式,GameMode屏幕将在该显示器上打开。

        glutEnterGameMode

         glutLeaveGameMode

        glutGameModeGet

Video Resize Functions

        这些函数不是在freeglut中实现的。

        glutVideoResizeGet

        glutSetupVideoResizing

        glutStopVideoResizing

        glutVideoResize

        glutVideoPan

Color Map Functions

        glutSetColor

        glutGetColor

        glutCopyColormap

MultiTouch Functions

        MultiTouch回调用于处理具有多个输入的环境,例如多点触摸屏、多点触摸板或多个鼠标。

        glutMultiEntryFunc ← id, GLUT_ENTERED|GLUT_LEFT

        glutMultiButtonFunc ← id, x, y, button, GLUT_DOWN|GLUT_UP

        glutMultiMotionFunc ← id, x, y

        glutMultiPassiveFunc ← id, x, y

        这些函数的工作方式与其非多重变体类似,带有一个额外的“deviceid”参数来描述当前输入设备(鼠标或手指)。

        异常:在MultiButtonFunc中,回调参数的顺序不同(x,y,button,state而不是button,state,x,y)。

        目前,在X11下,非多回调变体也会在X11上为每个事件调用。

        目前,在窗口下,第一个(最古老的)触摸点也控制鼠标光标,这会像往常一样触发非多重回调。

        所有这些函数都具有用户数据回调函数。

        限制:当前提供的游标id。在以下情况下,可能还需要获取设备id:

        当鼠标指针或触摸板正在执行不相关的动作,而不是触摸屏手势的一部分(在某些平台上可能不可能)时,支持双指手势,如捏以缩放触摸屏。

        避免Android上触摸屏和触摸板/游戏板之间的触摸id冲突;一种可能的解决方案是在触摸id中移动设备id。

        由于这种额外的支持是以额外的复杂性为代价的,我们正在考虑是否/如何实现它。

Mobile functions

        添加了这些新回调:

        glutInitContextFunc←void:当上下文初始化或重新初始化时(例如,在暂停后)调用。具有用户数据回调功能。

        glutAppStatusFunc←eevent:当应用程序的状态更改时调用,事件标识输入的状态。具有用户数据回调功能。可能的状态:

        应用程序暂停(或停止)→GGLUT_APPSTATUS_PAUSE

        应用程序暂停后返回→GGLUT_APPSTATUS_RESUME。在glutInitContextFunc回调之后调用。

        支持的移动平台

        安卓系统的支持在安卓页面上有进一步的描述。

        BlackBerry 10/BlackBerry PlayBook

        glutInitContextFunc ← void

        glutAppStatusFunc ← event

Miscellaneous Functions

        glutSetKeyRepeat和glutIgnoreKeyRepeat函数设置是否将重复按键(通过按住键生成)传递给键盘回调。glutSetKeyRepeat允许全局关闭键重复,而glutIgnoreKeyRepeats则在每个窗口的基础上控制这种行为。

        glutSetKeyRepeat

        glutIgnoreKeyRepeat

        glutForceJoystickFunc

        glutReportErrors

https://freeglut.sourceforge.net/docs/api.php#ColorMap

你可能感兴趣的:(FreeGlut,图形渲染)