contour-terminal / contour

Modern C++ Terminal Emulator
http://contour-terminal.org/
Apache License 2.0
2.46k stars 107 forks source link

Vulkan rendering frontend #312

Open christianparpart opened 3 years ago

christianparpart commented 3 years ago

Vulkan-hpp seems like an amazing c++ API binding and is even official .

Looks like you need LunarG SDK installed? Hopefully only for compiling.

Embedding into Qt: https://doc.qt.io/qt-5/qtgui-hellovulkanwidget-example.html

This ticket serves as tracker.

WSLUser commented 3 years ago

SDKs are only used for compiling. You use what you need out of it. For optimizing compilations, you'd need to ensure you only build what you need out of the SDK and exclude everything else.

christianparpart commented 3 years ago

As much as I'd love to have a vulkan renderer in the frontend, I think I should keep focusing on getting the codebase more robust for the current weeks and some features more usable/stable. :)

WSLUser commented 3 years ago

Yeah, I just was answering your question about the SDK. You still need to optimize DirectX before even considering another renderer (unless somebody else takes a stab at it.)

christianparpart commented 3 years ago

Yeah, I just was answering your question about the SDK. You still need to optimize DirectX before even considering another renderer (unless somebody else takes a stab at it.)

i don't have a directx renderer yet BUt a DirectDraw backend for the text shaper / font rasterizer; that one needs to finish in order to bring windows port on par with linux/osx. but thinking about it, I believe Vulkan is also possible on Windows. ;)

WSLUser commented 3 years ago

It's possible for all platforms. But since you've already started down the path for DirectX for Windows, I figured you'd want to finish that first.

WSLUser commented 3 years ago

So I've discovered Zink, which should help considerably with this and is available in the Mesa package for Linux. Not sure which release got it but 21.x+ at least has it. It should make life much better as it means that Vulkan can be the new rendering front-end but don't have to miss out on features of OpenGL that simply don't exist in other rendering front-ends. I think they have a few Windows issues to deal with still but nothing truly breaking. The point of the project was to increase maintainability and allow developers/projects to more easily adopt Vulkan (such as this one) while keeping some compatibility with older stuff where Vulkan isn't necessarily available due to old hardware or other various factors.

data-man commented 3 years ago

I think SDL2 is a very good replacement for Qt.

christianparpart commented 3 years ago

I think SDL2 is a very good replacement for Qt.

What is the benefit /downsides of SDL over Qt from this project's point of view?

data-man commented 3 years ago
SDL2 Qt
License ZLIB (L)GPL
Easy static linking :heavy_check_mark: :x:
Light :heavy_check_mark: :x:
GLFW :x: :x:
Surprises :x: :heavy_check_mark:

The table can be updated in the future. :smile:

data-man commented 3 years ago

https://github.com/albin-johansson/centurion - the best C++ wrapper I knew for SDL2 (C++17/20, header-only).