60 lines
2.2 KiB
C++
60 lines
2.2 KiB
C++
/*
|
||
Crafter®.Graphics
|
||
Copyright (C) 2025 Catcrafts®
|
||
Catcrafts.net
|
||
|
||
This library is free software; you can redistribute it and/or
|
||
modify it under the terms of the GNU Lesser General Public
|
||
License as published by the Free Software Foundation; either
|
||
version 3.0 of the License, or (at your option) any later version.
|
||
|
||
This library is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
Lesser General Public License for more details.
|
||
|
||
You should have received a copy of the GNU Lesser General Public
|
||
License along with this library; if not, write to the Free Software
|
||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||
*/
|
||
|
||
#include <vulkan/vulkan.h>
|
||
|
||
import Crafter.Graphics;
|
||
using namespace Crafter;
|
||
|
||
int main() {
|
||
/*
|
||
This sets up all necessary things and creates the vulkan device.
|
||
This must be called before any vulkan related things.
|
||
Things like VkDevice are static members of the VulkanDevice class.
|
||
*/
|
||
VulkanDevice::CreateDevice();
|
||
|
||
/*
|
||
This creates a window titled "HelloWindow" with a size of 1280x720 pixels.
|
||
The WindowWaylandVulkan class is a specialized window implementation.
|
||
that uses the Wayland display server protocol and vulkan renderer (hence the name "WaylandVulkan").
|
||
*/
|
||
WindowWaylandVulkan window("HelloWindow", 1280, 720);
|
||
|
||
/*
|
||
StartInit gives you a VkCommandBuffer to use before the event loop starts
|
||
Use this for inititializing things like textures.
|
||
*/
|
||
VkCommandBuffer cmd = window.StartInit();
|
||
|
||
/*
|
||
FinishInit executes all commands recorded to StartInit.
|
||
This must be called before the the event loops starts if you called StartInit before.
|
||
*/
|
||
window.FinishInit();
|
||
|
||
/*
|
||
This starts the window’s main event loop, allowing it to respond to user input and system events.
|
||
The window will remain open and responsive until it is closed.
|
||
You can hook into various events through the event system.
|
||
This call blocks the current thread; to run the event loop asynchronously, use StartAsync instead.
|
||
*/
|
||
window.StartSync();
|
||
}
|