Colección de citas famosas - Colección de máximas - Presentación de funciones OpenGL de uso común (definición + función)

Presentación de funciones OpenGL de uso común (definición + función)

Las API relacionadas con la biblioteca de funciones OpenGL incluyen la biblioteca principal (gl), la biblioteca de utilidades (glu), la biblioteca auxiliar (aux), la biblioteca de utilidades (glut), la biblioteca de ventanas (glx, agl, wgl) y extensiones. Biblioteca de funciones, etc. Como puede verse en la Figura 1, gl es el núcleo y glu es una encapsulación parcial de gl. glx, agl y wgl son funciones para diferentes sistemas de ventanas. glut es un conjunto de herramientas para programas OpenGL multiplataforma, más potente que aux. La biblioteca de funciones extendidas es una función desarrollada por los fabricantes de hardware para utilizar el mecanismo de extensión OpenGL para implementar actualizaciones de hardware. Estas bibliotecas se presentan en detalle a continuación.

1. Biblioteca principal OpenGL La biblioteca principal contiene 115 funciones y el prefijo del nombre de la función es gl. Esta parte de la función se utiliza para el procesamiento de gráficos central normal. Esta función es interpretada y ejecutada por gl.dll. Ya que muchas funciones pueden recibir diferentes números de las siguientes categorías. Según los parámetros del tipo, existen más de 300 prototipos de funciones derivadas. Las funciones de la biblioteca principal se pueden dividir principalmente en las siguientes categorías de funciones:

(1) Funciones para dibujar primitivas geométricas básicas. Como las funciones de dibujo de primitivas glBegain(), glEnd(), glNormal*(), glVertex*().

(2) Funciones de operaciones matriciales, transformaciones geométricas y transformaciones de proyección. Como la función de inserción de matriz glPushMatrix(), la función de matriz pop glPopMatrix(), la función de carga de matriz glLoadMatrix(), la función de multiplicación de matriz glMultMatrix(), la función de matriz actual glMatrixMode() y la función de normalización de matriz glLoadIdentity(), la función de transformación geométrica glTranslate *( ), glRotate*() y glScale*(), funciones de transformación de proyección glOrtho(), glFrustum() y función de transformación de ventana gráfica glViewport(), etc.

(3) Funciones del color, la iluminación y el material. Como configurar las funciones de modo de color glColor*(), glIndex*(), configurar las funciones de efectos de iluminación glLight*(), glLightModel*() y configurar la función de efecto de material glMaterial(), etc.

(4) Las funciones de lista de visualización incluyen principalmente glNewList(), glEndList(), glGenLists(), glCallList() y glDeleteLists() que crean, finalizan, generan, eliminan y llaman a la lista de visualización.

(5) Funciones de mapeo de textura, principalmente función de textura unidimensional glTexImage1D(), función de textura bidimensional glTexImage2D(), funciones para establecer parámetros de textura, entorno de textura y coordenadas de textura glTexParameter*(), glTexEnv *( ) y glTetCoord*(), etc.

(6) Función de efectos especiales. Función de fusión glBlendFunc(), función anti-aliasing glHint() y efecto de niebla glFog*().

(7) Funciones de rasterización y operación de píxeles. Como la posición del píxel glRasterPos*(), el ancho de línea glLineWidth(), el modo de dibujo de polígonos glPolygonMode(), la lectura del píxel glReadPixel(), la copia del píxel glCopyPixel(), etc.

(8) Función de selección y retroalimentación. Existen principalmente el modo de renderizado glRenderMode(), el búfer de selección glSelectBuffer() y el búfer de retroalimentación glFeedbackBuffer(), etc.

(9) Funciones de dibujo de curvas y superficies. Las funciones glMap*() y glMapGrid*() que generan curvas o superficies, y las funciones evaluadoras glEvalCoord*() glEvalMesh*().

(10) Funciones de consulta y configuración de estado. Incluye principalmente glGet*(), glEnable(), glGetError(), etc.

2. La biblioteca de utilidades OpenGL (GLU) contiene 43 funciones y el nombre de la función tiene el prefijo glu. OpenGL proporciona comandos de dibujo potentes pero pocos, y todos los dibujos más complejos deben comenzar desde puntos. Comience con la línea y la superficie. Para reducir el pesado trabajo de programación, Glu encapsula funciones OpenGL. Las funciones de Glu brindan a los desarrolladores un uso relativamente simple e implementan algunas operaciones más complejas llamando a funciones de la biblioteca principal. Esta función es interpretada y ejecutada por glu.dll. Las bibliotecas principales y las bibliotecas de utilidades de OpenGL se pueden ejecutar en todas las plataformas OpenGL. Incluye principalmente los siguientes tipos:

(1) Funciones auxiliares de mapeo de texturas, incluidas gluScaleImage(), gluBuild1Dmipmaps(), gluBuild2Dmipmaps().

(2) Coordenar las funciones de conversión y transformación de proyección, definir las funciones del modo de proyección gluPerspective(), gluOrtho2D(), gluLookAt(), seleccionar la función de volumen de visualización de la proyección gluPickMatrix(), calcular la matriz de proyección gluProject () y gluUnProject() y así sucesivamente.

(3) Herramientas de teselación de polígonos, incluidas gluNewTess(), gluDeleteTess(), gluTessCallback(), gluBeginPolygon() gluTessVertex(), gluNextContour(), gluEndPolygon(), etc.

(4) Herramientas de dibujo de superficies cuadráticas, que incluyen principalmente gluNewQuadric(), gluSphere(), gluCylinder(), gluDisk(), gluPartialDisk(), gluDeleteQuadric(), etc.

(5) Herramienta de dibujo B-spline racional no uniforme, utilizada principalmente para definir y dibujar curvas y superficies Nurbs, incluidas gluNewNurbsRenderer(), gluNurbsCurve(), gluBeginSurface(), gluEndSurface(), gluBeginCurve( ), gluNurbsProperty() y otras funciones.

(6) Herramienta de retroalimentación de errores, obtiene la cadena de información de error gluErrorString().

3. La biblioteca auxiliar OpenGL contiene 31 funciones, el prefijo del nombre de la función es aux. Esta parte de la función proporciona gestión de ventanas, procesamiento de entrada y salida y dibujo de algunos objetos tridimensionales simples. Esta función es interpretada y ejecutada por glaux.dll. La biblioteca auxiliar se creó para aprender y escribir programas OpenGL y es más bien una base preparatoria para probar ideas. La biblioteca Aux tiene muchos errores en su implementación de Windows, por lo que puede provocar fallos frecuentes. En ejemplos y demostraciones de programación multiplataforma, aux ha sido reemplazado en gran medida por la biblioteca glut. Las bibliotecas auxiliares en OpenGL no se ejecutan en todas las plataformas OpenGL. Las funciones de la biblioteca auxiliar incluyen principalmente las siguientes categorías:

(1) Funciones de inicialización y salida de ventanas, auxInitDisplayMode() y auxInitPosition().

(2) Funciones de procesamiento de ventanas y entrada de tiempo, auxReshapeFunc(), auxKeyFunc() y auxMouseFunc().

(3) Función de carga del índice de color, auxSetOneColor().

(4) Función de representación de objetos tridimensionales. Incluye dos formas de cuerpos de malla y cuerpos sólidos, como los cubos de dibujo auxWireCube() y auxSolidCube().

Aquí tomamos como ejemplo la malla, el cuboide auxWireBox(), la superficie anular auxWireTorus(), el cilindro auxWireCylinder(), el icosaedro auxWireIcosahedron(), el octaedro auxWireOctahedron(), el tetraedro auxWireTetrahedron() y el dodecaedro auxWireDodecahedron ( ), cono auxWireCone() y tetera auxWireTeapot().

(5) Función de gestión de procesos en segundo plano auxIdleFunc().

(6) El programa ejecuta la función auxMainLoop().

4. OpenGL Utility Toolkit contiene alrededor de 30 funciones y el nombre de la función tiene el prefijo glut. Glut es un conjunto de herramientas OpenGL que no depende de la plataforma de ventanas. Fue escrito por Mark KLilgrad en SGI (ahora en Nvidia) para ocultar la complejidad de las diferentes API de plataformas de ventanas. Las funciones comienzan con glut. Como un sustituto más poderoso de la biblioteca auxiliar, proporcionan funciones de dibujo más complejas. Esta función es interpretada y ejecutada por glut.dll. Dado que la función de administración de ventanas en exceso no depende del entorno de ejecución, la biblioteca de herramientas en OpenGL puede ejecutarse en X-Window, Windows NT, OS/2 y otros sistemas, y es particularmente adecuada para desarrollar programas de muestra OpenGL que no requieren interfaces complejas. Para los programadores experimentados, el exceso se utiliza generalmente para enderezar el código de gráficos 3D antes de integrarlo en una aplicación completa. Esta parte de la función incluye principalmente:

(1) Función de operación de ventana, inicialización de ventana, tamaño de ventana, posición de ventana y otras funciones glutInit() glutInitDisplayMode() glutInitWindowSize() glutInitWindowPosition(), etc.

(2) Función de devolución de llamada. Responda a mensajes de actualización, mensajes de teclado, mensajes de mouse, funciones de temporizador, etc., GlutDisplayFunc() glutPostRedisplay() glutReshapeFunc() glutTimerFunc() glutKeyboardFunc() glutMouseFunc().

(3) Crea objetos tridimensionales complejos. Tienen las mismas funciones que la biblioteca auxiliar. Crea mallas y cuerpos sólidos. Como glutSolidSphere(), glutWireSphere(), etc. No hay más descripción aquí.

(4) Función de menú. Crear agregar funciones de menú GlutCreateMenu(), glutSetMenu(), glutAddMenuEntry(), glutAddSubMenu() y glutAttachMenu().

(5) Función de ejecución del programa, glutMainLoop().