This is a Flight Simulator project implemented in OpenGL as part of a CENG469 Computer Graphics course assignment. The goal of the assignment was to implement environment mapping and reflection capabilities using cubemaps. The project was implemented in C++ and OpenGL. You can find more detail about the project here
Flight Simulator
The codebase follows a mini-game engine design, with separate classes for different functionalities:
Camera.h
: This class helps to control the view of the scene and manage the camera movement.Mesh.h
: This class is responsible for storing mesh data in buffers and handling mesh-related operations.Shader.h
: This class creates shaders, sends uniform data to the corresponding shaders, and manages the rendering pipeline.Renderer.h
: This class binds the buffers as shader attributes, renders objects using index buffers, and loads textures.UAV.h
: This class handles the flight mechanisms and calculations for the airplane.SkyBox.h
: This class handles the skybox calculations and rendering.
Flight Movement
- OpenGL 3.3 or later.
- C++ compiler supporting C++11 or later.
- The project has been tested on Linux platform.
- Clone the repository:
https://github.com/ramazantokay/Flight-Simulator.git
- Change into the project directory:
cd Flight-Simulator
- Build the project using the provided makefile:
make all
- Run the executable:
./main
- Use the controls to manipulate the rendered surfaces.
The keyboard controls are as follows:
- W Speed up
- S Slow down
- A Rool left
- D Roll right
- Q Change camera view to Left
- E Change camera view to Right
- R Change camera view to Back
- T Change camera view to Front
- The dynamic reflection of the skybox has some issue, will be fixed
- The flight mechanism is not perfect, will be improved
Please note that this implementation may contain limitations, potential bugs, and dependencies on external libraries and tools. While efforts have been made to ensure correctness, there is no guarantee of flawless execution. Exercise caution, conduct thorough testing, and adapt the code to your requirements. Report issues on GitHub and contribute to improvements. Use responsibly, validate results, and the authors disclaim liability for any damages or issues arising from the use of this code.
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! If you have any suggestions or improvements, feel free to submit a pull request or open an issue in the GitHub repository.
If you have any questions, suggestions, or feedback, please feel free to reach out to me at rmzntokay@gmail.com.