Skia
Open-Source Vulkan C++ API
Our great sponsors
Skia | Open-Source Vulkan C++ API | |
---|---|---|
42 | 25 | |
7,176 | 2,462 | |
2.4% | 1.7% | |
10.0 | 9.5 | |
15 days ago | 8 days ago | |
C++ | C++ | |
BSD 3-clause "New" or "Revised" License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Skia
-
SIMD intrinsics and the possibility of a standard library solution
I use SkVx from Skia. It uses compilers' vector extensions and few platform-specific intrinsics. If no vector extension available (e.g. msvc), a scalar implementation is provided in the hope that compiler can vectorize it.
-
Can you develop any type of desktop app with Flutter?
Regarding compiling to JS, you can compile dart to JS however when running Flutter on mobile platforms such as iOS or Android, you're not compiling to JS but instead you're using Dart to draw widgets on the screen via Flutter engine which uses a cross-platform graphics engine under the hood called Skia. If you're running on web on the other hand, your dart code would compile to vector graphics rendered within a canvas element in pure HTML.
-
Build desktop applications with JetBrains' new UI style and Compose Desktop
It built on a render framework named skia, JetBrains create a kotlin mapping which named skiko for it.
-
In One Minute : Flutter
Flutter applications are written in the Dart programming language, and can connect to platform languages such as Java, Kotlin, Swift, and Objective-C. Also, thanks to ffi support, it is possible to interact with the C code directly . Flutter itself is built with C, C++, Dart, and Skia (a 2D rendering engine).
-
JetBrains invites developers to join the Fleet Public Preview Program
Fleet does not use Compose, but it does use Skiko[1], which also provides binding for Skia[2] (the native graphics library also used by Chrome & Flutter).
The main difference between the libraries is that Skija provides Java/JVM bindings for Skia, whereas Skiko provides Kotlin bindings for Kotlin/JVM, Kotlin/JS, and Kotlin/Native targets. Of course Skiko's Kotlin/JVM bindings can be used with other JVM languages, not just with Kotlin.
-
Opinions on canvas(or canvas like capabilities) in React Native
RN Skia: https://github.com/Shopify/react-native-skia Skia itself: https://skia.org/
-
Modern.Forms: Cross-platform spiritual successor to Winforms for .NET 6
Yeahp, it renders the controls itself using skiasharp, which I believe uses skia
-
Alternatives to Cairo for 2d graphics for X11
If you want CPU rendering perhaps tiny-skia meets your needs? Also proper Skia is generally the Cairo alternative, though I dunno that its any easier to use or compile than Cairo is. Alternatively you could try Raqote or Piet.
-
How do you read a big project's source code?
First step: Read the documentation. I see at the bottom of the github page that there's a link, so I go there: https://skia.org/
I was looking into the skia source code since I was curious on how it handled the renderering but I really don't know where to begin looking. There doesn't seem to be an entry file that handles the initialization and there are dozens of folders with hundreds of functions.
Open-Source Vulkan C++ API
- Cross platform low level graphics API suitable for game development?
-
std::string_view, std::string, char const*, and char const* const*
So I am attempting to follow the Vulkan Tutorial, but I am trying to use decidedly more C++ than the tutorial suggests, by using the Vulkan-Hpp C++ bindings and the vk::raii classes, in particular.
-
I put together this compute pipeline example using the C++ RAII interface. Perhaps other beginners could learn from it, and any code reviews/comments would be welcome.
Its literally a few kb: https://github.com/KhronosGroup/Vulkan-Hpp/tree/master/vulkan Why on earth are you downloading all the samples and what not? Just use the hpp files and be done with it. SMH
-
Ask HN: How I get a job that uses C?
All the current major game engines are C++. C hasn't been widely used since the Quake 3 days.
While yes the Vulkan & OpenGL APIs are pure C, that's very, very little of what you actually code against. You very quickly abstract that or use a middleware like bgfx or whatever. In the case of Vulkan while the spec API is C, there's first-class C++ wrappers/bindings provided as well: https://github.com/KhronosGroup/Vulkan-Hpp
And other than Vulkan & OpenGL, you'll find that most other APIs/libraries in the space are C++, not C. Valve's libraries are C++. Dear ImGui is C++. Bullet & PhysX are C++. Microsoft's glTF SDK is C++. etc...
You can argue endlessly about how "true C++" those all are or if they're just "C with namespaces" but that's largely irrelevant - they aren't C and they need a C++ compiler.
-
Bootstrapping Vulkan for Scientific Compute Applications?
Having this on the side and reading the actual implementation is in my opinion the best way to learn about using Vulkan compute and how the different parts of Vulkan are related. On the other hand you need to be at least little bit familiar with concepts of Vulkan (and vulkan.hpp) to understand it and know how would things change if you would change some options.
-
The project with a single 11,000-line code file
vulkan_structs.hpp - part of the Vulkan-Hpp library (Vulkan bindings for C++) comes in at 97967 lines of code.
-
How are the raii wrappers different from the Unique versions?
https://github.com/KhronosGroup/Vulkan-Hpp/issues/926#issuecomment-810979142
Really?
The github doc says that there's an overhead to the Unique types since they must store allocation callbacks. Is that true for the RAII types too? which approach is better? What do I use?
There is nothing that requires doing any sort of RAII types. Personally, having each object be able to delete itself by keeping track of what created it so it can call a Vulkan destroy method doesn't really gain me anything. When I am dealing with an explicit API like this, I am really ok with being explicit about when I am done with a resource and it can be freed. These wrappers can also get you into trouble like this. On the off chance that I do somehow not free a resource when I am done with it, that is likely a hint at a bigger issue with my code that these sort of utilities will clean up and hide from the resource tracker in the validation layers.
What are some alternatives?
bgfx - Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
GLFW - A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
nanovg - Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.
Atomic Game Engine - The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript
Ogre 3D - scene-oriented, flexible 3D engine (C++, Python, C#, Java)
imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
OpenSceneGraph - OpenSceneGraph git repository
urho3d - Game engine
Irrlicht - An automatically updated mirror of the Irrlicht SVN repository on sourceforge
canvas - High performance skia binding to Node.js. Zero system dependencies and pure npm packages without any postinstall scripts nor node-gyp.