prefacio
La programación de gráficos ha sido durante mucho tiempo uno de los temas más desafiantes en informática. Con el auge de la tecnología de realidad virtual limitada, cada vez más empresas comienzan a involucrarse en el campo de la realidad virtual. En la actualidad, Unity3d es el más utilizado para el desarrollo, pero al igual que los navegadores, las aplicaciones 2D deben ser 3D (la interfaz de la aplicación 2D se proyecta en una escena 3D y el usuario puede operar la interfaz 2D a través del mango). Estos requisitos requieren 3D gráficos La programación es muy familiar para hacer estas escenas geniales. La programación de gráficos actual se basa en la biblioteca de gráficos, es decir, el programador llama a una biblioteca predefinida oa una serie de funciones en la biblioteca, y estas bibliotecas brindan soporte para las operaciones gráficas subyacentes.
Hay muchas bibliotecas de gráficos en el mercado ahora, pero la biblioteca de gráficos independiente de la plataforma común se llama OpenGL (Open Graphics Library). Esta serie de blogs también presenta cómo usar OpenGL en C++ para la programación de gráficos 3D. Antes de presentar el uso de OpenGL para la programación de gráficos 3D, primero hagamos un obstáculo que debe superarse antes de comenzar: la preparación de la configuración del entorno de desarrollo de OpenGL.
1. Preparación de la configuración del entorno
Como dice el refrán: "Todo es difícil al principio". Muchos estudiantes están muy interesados en OpenGL, pero se desaniman por la etapa de configuración del entorno cuando lo hacen. El umbral de entrada para los estudiantes interesados. En primer lugar, presentemos el entorno y las bibliotecas necesarias para usar OpenGL en C++, de la siguiente manera:
IDE de desarrollo: Visual Studio 2022, otras versiones también están disponibles, la configuración es similar a la biblioteca de administración de ventanas
OpenGL/GLSL
(GLFW)
biblioteca de extensión (GLEW)
biblioteca matemática (GLM)
biblioteca de carga de imágenes de textura (SOIL2)
A continuación, nos prepararemos para configurar el entorno mencionado anteriormente. OpenGL/GLSL no necesita ser configurado por nosotros. El sistema lo tiene por defecto. GLSL es un lenguaje de sombreado introducido en OpenGL2.0. Esta introducción permite a los programadores lograr efectos cada vez más realistas al escribir lenguajes de sombreado.
2. Descarga bibliotecas relacionadas
2.1 Biblioteca de administración de ventanas de descarga (GLFW)
OpenGl en realidad no dibuja la imagen directamente en la pantalla de la computadora, sino que la convierte en un búfer de cuadros, y luego la computadora es responsable de dibujar el contenido del búfer de cuadros en una ventana en la pantalla. Para completar esta función, puede optar por utilizar la biblioteca GLFW. Esta biblioteca es compatible con Windows, MacOS, Linux y otros sistemas operativos. Podemos obtenerla del sitio web oficial: Dirección de descarga del sitio web oficial de GLFW
Si
es miembro de CSDN, debe puede ir a los recursos para descargar, no necesita Puntos, si no tiene una membresía, vaya directamente al sitio web oficial para descargar, no es necesario gastar dinero para abrir una membresía para descargar un recurso: GLFW
CSDN dirección de descarga
2.2 Descargar la biblioteca de extensiones de OpenGL
GLEW (OpenGL extension wrangler), es decir, OpenGL extension cowboy, OpenGL se organiza en torno a un conjunto de funciones básicas y mecanismos de extensión. Con el desarrollo de la tecnología, el mecanismo de extensión se puede usar para admitir nuevas funciones, por lo que GLEW se usa para hacer este trabajo de. La descarga de esta biblioteca también brinda a los lectores dos direcciones:
Dirección de descarga del sitio web oficial de GLEW
Dirección de descarga GLEW CSDN
2.3 Descargar biblioteca de matemáticas OpenGL
GLM es la biblioteca matemática de OpenGL Mathematics, es una biblioteca C++ con solo archivos de cabecera, compatible con Windows, MacOS y Linux, puede proporcionar clases y funciones matemáticas básicas relacionadas con conceptos gráficos, como vectores, matrices y cuaterniones, también contiene varias clases de herramientas para crear y usar estructuras gráficas 3D comunes, como matriz de perspectiva y matriz de vista
Dirección de descarga del sitio web oficial de GLM
Dirección de descarga GLM CSDN
2. 4 Descarga de la biblioteca de carga de imágenes de textura SOIL2
SOIL2 se usa para cargar texturas de imágenes OpenGL. Podemos escribir un cargador de imágenes de textura desde cero, pero teniendo en cuenta una variedad de formatos de archivo de imagen, generalmente es una opción más inteligente usar una biblioteca de carga de imágenes de texturas. Instalación de la biblioteca integrada de carga de texturas de imágenes SOIL2 requiere que descargue la biblioteca SOIL2 y una herramienta auxiliar premake
SOIL2 Descarga de GitHub
herramienta premake descarga del sitio web oficial
SOIL2 CSDN descargar
herramienta prefabricada CSDN descargar
3. Prepare archivos de biblioteca compartidos (lib) e incluya carpetas
Debido a que desarrollar OpenGL en Windows requiere configurar el entorno, nuestra mejor manera es configurar el entorno de desarrollo de OpenGL como una plantilla de proyecto, de modo que podamos desarrollar en base a nuestra plantilla preconfigurada cada vez que creamos un nuevo proyecto de OpenGL. Antes de crear una plantilla de proyecto, debemos encontrar un lugar para colocar la biblioteca correspondiente y luego crear una referencia a la biblioteca en Visual Studio. Primero, debemos elegir una ubicación para almacenar nuestro archivo de biblioteca. Aquí podemos elegir almacenar en cualquier lugar. La siguiente figura es la estructura de carpetas de la carpeta.
De acuerdo con el diagrama de estructura de archivos de la biblioteca anterior, vamos a practicar Aquí creé una carpeta en mi disco D para almacenar estas bibliotecas relacionadas de OpenGL.
Después de crear la estructura del archivo de la biblioteca, comenzamos a preparar la biblioteca correspondiente
3.1 Preparar la biblioteca de gestión de ventanas GLFW
Después de descargar el paquete comprimido de GLFW y descomprimirlo, obtendremos un directorio de la siguiente manera.
Después de descomprimir, podemos ver que hay diferentes versiones de lib de Visual Studio. Yo uso Visual Studio 2022, así que pongo todo el contenido en lib. -vc2022 Cópielo en D:\OpenGL\OpenGLTemplate\lib
la , y luego regrese a la carpeta glfw que descomprimimos, que es la carpeta en la imagen de arriba. Haga clic en incluir y encontrará un directorio GLFW debajo del directorio. Copie todo el directorio en el carpeta que creamos En el directorio de inclusión en la carpeta OpenGLTemplate, la ruta es: D:\OpenGL\OpenGLTemplate\include
, hasta ahora, la preparación de GLFW está completa.
3.2 Preparar la biblioteca de extensiones OpenGL GLEW
Del mismo modo, descomprima el paquete comprimido GLEW obtenido anteriormente y obtendrá la estructura de archivos que se muestra en la figura a continuación:
Después de descomprimir la biblioteca gew, haga clic en lib->Release->x64 y cópielos todos en la carpeta OpenGLTemplate que creamos en el lib directory: path D:\OpenGL\OpenGLTemplate\lib
, luego regrese al directorio glew que descomprimimos, busque el directorio include, haga clic en él y busque un directorio GL dentro, cópielo todo en el directorio include en OpenGLTemplate. Ruta: D:\OpenGL\OpenGLTemplate\include
en este punto, la integración de la biblioteca GLEW está completa.
3.3 Preparar la biblioteca matemática OpenGL GLM
La integración de esta biblioteca es relativamente simple. Después de obtener el paquete comprimido de esta biblioteca y descomprimirlo, obtendremos el directorio que se muestra en la siguiente figura. Copiamos directamente todo el directorio glm
bajo el directorio descomprimido al directorio de inclusión bajo el Directorio OpenGLTemplate que creamos. La biblioteca glm está integrada
3.4 Preparar la biblioteca de carga de imágenes de textura SOIL2
La integración de SOIL2 es un poco más problemática. Necesitamos la ayuda de la herramienta premake. Primero obtenemos el zip de SOIL2 y lo descomprimimos, luego obtenemos el paquete zip de premake y lo descomprimimos. Después de la descompresión de premake, obtendremos un premake5.exe, cópielo en nuestra descompresión en el directorio SOIL2. Si el lector obtiene SOIL2 de la dirección de descarga de CSDN que proporcioné, lo compilé y puedo usarlo directamente. Si se descarga del sitio web oficial, necesitamos compilarlo.
Obtenga el paquete comprimido de premake y descomprímalo para obtener el siguiente directorio.Copie
premake5.exe en el directorio SOIL2 después de que lo descomprimamos, es decir,
D:\OpenGL\installPKG\SOIL2-1.3.0
debajo y luego.
Luego ejecute la línea de comando CMD bajo SOIL2-1.3.0: Ingrese el comando: premake5 vs2022
注意,vs2022是我的visual studio的版本,具体的版本根据安装的版本来定
Después de ejecutar el comando anterior, se generará un directorio make bajo SOIL2-1.3.0
Luego ingresamos al directorio make->windwos:
use Visal Studio para abrir la imagen de arriba Archivos marcados con cuadros rojos.
Después de abrir el archivo anterior, como se muestra en la figura, hacemos clic con el botón derecho del mouse y seleccionamos Generar en el menú emergente. Una vez completada la generación, cierre Vsual Studio. En este momento, habrá una librería adicional en el Directorio SOIL2-1.3.0, como se muestra
a continuación. A continuación, copiaremos todas las bibliotecas de lib en el directorio lib del directorio OpenGLTemplate que creamos anteriormente. Luego regrese al directorio SOIL2 y copie todos los directorios src->SOIL2 al directorio include bajo el directorio OpenGLTemplate. De esta manera, nuestra biblioteca de carga de texturas de imágenes SOIL2 está integrada.
到这里,我们对比下我们之前给到的OpenGLTemplate的文件目录图发现,还差一个glew32.dll文件需要放到OpenGLTemplate目录下,没有 这个库我们是无法运行OpenGL的代码的,这个库位于我们解压后的Glew目录下,我们找到解压的Glew目录,然后在其bin->Release->x64下找到这个库
Cópielo en el directorio OpenGLTemplate y nuestra biblioteca estará lista. A continuación hacemos una plantilla de inicio de proyecto OpenGL
4. Use Visual Studio para hacer una plantilla de proyecto OpenGL
4.1 Configuración de plantillas
Abra nuestro Visual Studio, luego cree un nuevo proyecto vacío de C ++ y
ábralo después de configurar el nombre. Por ejemplo, aquí lo llamamos OpenGLTemplate, y luego lo abrimos.
Primero configuramos la referencia de la biblioteca en modo Depuración.
Encontramos el proyecto-> properties para abrir la interfaz de configuración de propiedades, y luego configure la ruta de inclusión en nuestro directorio OpenGLTemplate anterior al "directorio de inclusión" marcado en la figura a continuación.
Luego, todavía encontramos "Linker -> General" en el panel de configuración de propiedades de Visual Studio y configuramos el directorio lib en el directorio OpenGLTemplate que preparamos antes aquí
Luego, también agregamos glfw3.lib, glew32.lib, soil2-debug.lib, opengl32.lib en la biblioteca en el directorio OpenGLTemplate en "Linker -> Entrada -> Agregar dependencias" (ya debería ser parte de WindowsSDK Sí, no no importa si no lo configura, pero es mejor configurarlo
para el seguro) Guárdelo después de la configuración y luego cambie al modo de lanzamiento, repita la operación y configúrelo nuevamente, por lo que no entraré en detalles aquí.
4.2 Exportación de plantillas
Después de hacer clic en Finalizar, cuando volvamos a crear un nuevo proyecto, encontraremos una plantilla de proyecto adicional, como se muestra a continuación:
Podemos crear un proyecto OpenGL haciendo clic en la plantilla que definimos.
5. Prueba el entorno OpenGL
Primero, haga clic derecho en el directorio del archivo fuente del proyecto para crear un nuevo archivo cpp: FirstOpenGLDemo.cpp
Código de entrada:
#include<GL/glew.h>
#include<GLFW/glfw3.h>
#include<iostream>
using namespace std;
void init(GLFWwindow* window) {
}
void display(GLFWwindow* window, double currentTime) {
glClearColor(1.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
}
int main(void) {
if (!glfwInit()) {
exit(EXIT_FAILURE);
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
GLFWwindow* window = glfwCreateWindow(600, 600, "OpenGl-Demo", NULL, NULL);
glfwMakeContextCurrent(window);
if (glewInit() != GLEW_OK) {
exit(EXIT_FAILURE); }
glfwSwapInterval(1);
init(window);
while (!glfwWindowShouldClose(window)) {
display(window, glfwGetTime());
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
exit(EXIT_SUCCESS);
}
En este momento, encontramos que las bibliotecas relevantes se pueden referenciar con éxito, pero no se pueden ejecutar, y se informará el siguiente error: En este momento
, necesitamos colocar la biblioteca de enlaces dinámicos glew32.dll que colocamos en OpenGLTemplate directorio, en el directorio de nuestro proyecto bajo el directorio con el mismo nombre.
En este momento, ejecutamos el código nuevamente y encontraremos que la operación es exitosa.
Nuestro código anterior simplemente muestra un fondo rojo Hasta ahora, la configuración del entorno de desarrollo OpenGL se ha completado.
Resumir
Este artículo presenta principalmente el entorno de desarrollo OpenGL basado en Visual Studio 2022 en Windows 10, presenta principalmente la configuración e integración de la biblioteca de administración de ventanas GLFW, la biblioteca de extensión OpenGL GLEW, la biblioteca matemática OpenGL GLM y la biblioteca de carga de texturas de imágenes SOIL2, y finalmente personaliza una plantilla de proyecto de Visual Studio y finalmente prueba nuestro entorno configurado con una demostración de prueba Es una pena que glew32.dll deba copiarse manualmente en el directorio especificado del proyecto, de lo contrario, el programa OpenGL no se puede ejecutar. Si los lectores tienen una manera mejor y más conveniente aquí, bienvenidos a comunicarse en el área de comentarios.