Este proyecto es una implementación básica de un motor gráfico en C# utilizando Windows Forms. Permite crear una ventana en la que se dibuja un cuadrado que rota y colisiona con un plano.
A continuación se muestra el diagrama de clases del proyecto:
| Archivo | Método/Función | Descripción |
|---|---|---|
| Ventana.cs | Initialize() | Configura el entorno OpenGL y la matriz de proyección. |
| Ventana.cs | Timer_Tick(state) | Actualiza la posición del cuadrado y verifica la colisión con el plano. |
| Ventana.cs | OnPaint(e) | Dibuja el plano y el cuadrado con la textura emisiva en la ventana. |
| Square.cs | Square(position, size, mass) | Inicializa un cuadrado con una posición, tamaño y masa dada. |
| Square.cs | UpdatePosition() | Actualiza la posición del cuadrado en función de su velocidad y aceleración. |
| Square.cs | ReverseDirection() | Invierte la dirección de la velocidad del cuadrado para simular un rebote. |
| Square.cs | IsCollidingWith(plane) | Verifica si el cuadrado colisiona con el plano. |
| Plane.cs | Plane(position, width, height) | Inicializa un plano con una posición, ancho y altura dada. |
| OpenGLRenderer.cs | Initialize() | Configura OpenGL, habilita capacidades y configura la matriz de proyección y visualización. |
| OpenGLRenderer.cs | LoadTexture(path) | Carga una textura emisiva desde un archivo de imagen y configura los parámetros de la textura en OpenGL. |
| OpenGLRenderer.cs | Render(square, plane) | Renderiza el cuadrado con la textura emisiva y el plano en OpenGL. |
El proyecto consiste en una ventana que muestra un cuadrado que rota alrededor de su centro. El cuadrado tiene una velocidad inicial y una aceleración constante que simula una gravedad hacia abajo.
Si el cuadrado colisiona con el plano, se simula un rebote invirtiendo su dirección vertical.
- Visual Studio 2019 o superior.
- .NET Framework 4.7.2 o superior.
Durante el proceso de desarrollo del proyecto, se encontraron varios errores que afectaron el funcionamiento y la integración de las diferentes partes del sistema. A continuación, se detallan los errores más relevantes experimentados:
-
Error en la carga de la textura emisiva: Inicialmente, se intentó cargar la textura emisiva utilizando la clase
TextureBrushde la bibliotecaSystem.Drawing. Sin embargo, se generó una excepciónArgumentExceptioncon el mensaje "Parameter is not valid". Esto se debió a una incompatibilidad entre la ruta del archivo de la textura y la ubicación desde donde se estaba ejecutando la aplicación. La solución fue proporcionar la ruta absoluta del archivo de textura para asegurarse de que se encontrara correctamente. -
Error de referencia a la biblioteca OpenTK: Al intentar utilizar la biblioteca OpenTK para trabajar con OpenGL, se encontró un error de referencia, especificamente "OpenTK not found". Esto se debe a que la biblioteca OpenTK no estaba instalada en el entorno de desarrollo. La solución fue instalar la biblioteca OpenTK a través de NuGet o mediante la descarga manual e incorporarla al proyecto.
-
Error de compatibilidad entre OpenGL y OpenTK: Una vez solucionado el error de referencia a OpenTK, se encontraron errores adicionales al intentar utilizar las clases y métodos de OpenGL a través de OpenTK. Esto se debe a diferencias de versiones y compatibilidad entre OpenGL y OpenTK. Para resolver estos errores, es necesario asegurarse de utilizar las versiones correctas y compatibles de OpenGL y OpenTK, y ajustar el código en consecuencia.
-
Errores sintácticos y de lógica: Durante la integración del código en diferentes archivos y clases, se encontraron errores sintácticos y de lógica que causaron un funcionamiento incorrecto o inesperado del sistema. Estos errores incluyen typos, mal uso de métodos y parámetros, falta de llamadas a métodos necesarios, entre otros. La solución consistió en revisar cuidadosamente el código, depurarlo paso a paso y corregir los errores encontrados.
-
Errores de rendimiento: En algunos casos, el rendimiento del sistema pudo verse afectado debido a la forma en que se realizaban los cálculos o las llamadas a OpenGL. Estos errores se manifestaron en una baja tasa de cuadros por segundo (FPS) o en una ejecución lenta de la aplicación. Para solucionar estos problemas, se requirió optimizar el código, revisar la lógica de los cálculos y evitar llamadas innecesarias a OpenGL.
En resumen, el desarrollo de este proyecto presentó desafíos relacionados con la carga de texturas, la integración de OpenGL a través de OpenTK y la corrección de errores sintácticos y de lógica. La resolución de estos errores requirió un enfoque de depuración sistemático, la instalación de bibliotecas adecuadas y la optimización del rendimiento. A medida que se solucionaron los errores, el sistema pudo funcionar correctamente y mostrar la textura emisiva en pantalla.
- Clona este repositorio en tu máquina local o descarga el código fuente.
git clone https://github.com/yousseffdil/graphic-engine.git
- Abre el proyecto en Visual Studio.
- Compila y ejecuta el proyecto.
- Se abrirá una ventana donde podrás ver el cuadrado rotando y colisionando con el plano.
