Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tntmeijs/plain
A simple webbrowser built completely from scratch.
https://github.com/tntmeijs/plain
computer-graphics cpp network-programming vulkan webbrowser winsock
Last synced: about 2 months ago
JSON representation
A simple webbrowser built completely from scratch.
- Host: GitHub
- URL: https://github.com/tntmeijs/plain
- Owner: tntmeijs
- License: mit
- Created: 2022-10-06T17:27:37.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2023-08-06T10:20:43.000Z (over 1 year ago)
- Last Synced: 2023-08-06T11:26:22.420Z (over 1 year ago)
- Topics: computer-graphics, cpp, network-programming, vulkan, webbrowser, winsock
- Language: C++
- Homepage:
- Size: 262 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Plain
Welcome to the Plain project!Plain is an educational project to learn more about how webbrowsers work.
Everyone has used webbrowsers, yet only a small number of people *really* know how they work.Multiple decades worth of research have gone into the likes of [Google Chrome](https://www.google.com/chrome/), [Mozilla FireFox](https://www.mozilla.org/en-US/firefox/), or [Microsoft Edge](https://www.microsoft.com/en-us/edge).
Plain will realistically never even come close to the commercial webbrowsers.However, you will be able to navigate the web using Plain!
# Third-party libraries and SDKs
Writing a webbrowser from scratch is a lot of work.
To avoid spending a lot of time writing literally *everything* from scratch, Plain depends on a few third-party libraries and SDKs:
- [Vulkan](https://www.vulkan.org/): Next-generation API for 3D graphics and computing (could be seen as a "successor" to [OpenGL](https://www.opengl.org/)).
- [Spdlog](https://github.com/gabime/spdlog) ([MIT](https://github.com/gabime/spdlog/blob/v1.x/LICENSE)): Very fast, header-only/compiled, C++ logging library.
- [GLM](https://github.com/g-truc/glm) ([MIT](https://github.com/g-truc/glm/blob/master/copying.txt)): Header only C++ mathematics library.
- [GLFW](https://github.com/glfw/glfw) ([Zlib](https://github.com/glfw/glfw/blob/master/LICENSE.md)): A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input.This project would not have been possible without the help of these awesome libraries. ♥
# Development log
## 30th of July 2023
- After a busy period at work, I finally found some time again to pick up this project.
- Put together Vulkan boilerplate code to render a triangle to the screen.
![hello vulkan triangle](media/20230730_hello_vulkan_triangle.png)## 1st of January 2023
- Added queue family discovery.
- Added logical device creation.## 20th of December 2022
- Added physical device (GPU) selection.## 11th of December 2022
- Added Vulkan instance creation.
- Added Vulkan extension and validation layer configuration.## 23rd of October 2022
- Created graphics project.
- Added window creation.
![window creation](media/20221023_window_creation.png)## 22nd of October 2022
- Implemented very basic HTTP/1.1 protocol.
- Added logging to make it easier to debug the application.
- Managed to receive a valid response from a website.
![valid HTTP/1.1 response](media/20221022_valid_http_1_1_response.png)## 8th of October 2022
- Created TCP socket abstraction layer for [WinSock](https://en.wikipedia.org/wiki/Winsock).## 6th of October 2022
- Started working on Plain.