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();
|
|||
|
|
}
|