MXVK Vulkan Framework
0.33.1
C++20 Vulkan rendering framework for practical 2D and 3D application development with SDL3.
Loading...
Searching...
No Matches
skeleton.cpp
Go to the documentation of this file.
1
#include "
mxvk/argz.hpp
"
2
#include "
mxvk/mxvk.hpp
"
3
#include "
mxvk/mxvk_exception.hpp
"
4
#include <SDL3/SDL.h>
5
#include <format>
6
#include <iostream>
7
8
namespace
skeleton
{
9
class
SkeletonWindow
:
public
mxvk::VK_Window
{
10
public
:
11
SkeletonWindow
(
int
width,
int
height,
bool
full,
bool
enable_vsync) :
mxvk
::
VK_Window
(
" -[ MXVK Skeleton ] - "
, width, height, full,
MXVK_VALIDATION
, enable_vsync) {
12
std::cout <<
"skeleton: started example.\n"
;
13
}
14
void
event
(SDL_Event &e)
override
{
15
switch
(e.type) {
16
case
SDL_EVENT_KEY_DOWN:
17
if
(e.key.key == SDLK_ESCAPE) {
18
exit
();
19
return
;
20
}
21
break
;
22
case
SDL_EVENT_QUIT:
23
exit
();
24
return
;
25
}
26
}
27
void
proc
()
override
{
28
// drawing commands
29
}
30
};
31
}
// namespace skeleton
32
33
int
main
(
int
argc,
char
**argv) {
34
try
{
35
Arguments
args =
proc_args
(argc, argv);
36
skeleton::SkeletonWindow
window(args.
width
, args.
height
, args.
fullscreen
, args.
enable_vsync
);
37
window.
loop
();
38
}
catch
(
mxvk::Exception
&e) {
39
std::cerr << std::format(
"mxvk: Exception: {}\n"
, e.
text
());
40
return
EXIT_FAILURE;
41
}
catch
(
ArgException<std::string>
&e) {
42
std::cerr << std::format(
"mxvk: Argument Exception: {}\n"
, e.
text
());
43
return
EXIT_FAILURE;
44
}
45
return
EXIT_SUCCESS;
46
}
argz.hpp
Lightweight, header-only, template command-line argument parser.
proc_args
Arguments proc_args(int &argc, char **argv)
Parse standard libmx2 command-line options from main()'s argv.
Definition
argz.hpp:872
ArgException
Exception thrown by Argz::proc() on unrecognised or malformed options.
Definition
argz.hpp:178
mxvk::Exception
Definition
mxvk_exception.hpp:7
mxvk::Exception::text
std::string text() const
Definition
mxvk_exception.hpp:10
mxvk::VK_Window
Main Vulkan window wrapper for MXVK.
Definition
mxvk.hpp:38
mxvk::VK_Window::loop
void loop()
Run the main event/render loop.
Definition
mxvk.cpp:627
mxvk::VK_Window::exit
void exit()
Request loop termination.
Definition
mxvk.cpp:1429
mxvk::VK_Window::VK_Window
VK_Window()=default
Construct an empty window object.
skeleton::SkeletonWindow
Definition
skeleton.cpp:9
skeleton::SkeletonWindow::SkeletonWindow
SkeletonWindow(int width, int height, bool full, bool enable_vsync)
Definition
skeleton.cpp:11
skeleton::SkeletonWindow::proc
void proc() override
Execute one processing/update step.
Definition
skeleton.cpp:27
skeleton::SkeletonWindow::event
void event(SDL_Event &e) override
Handle one SDL event.
Definition
skeleton.cpp:14
main
int main(int argc, char **argv)
Definition
main.cpp:173
mxvk.hpp
MXVK_VALIDATION
#define MXVK_VALIDATION
Definition
mxvk.hpp:28
mxvk_exception.hpp
mxvk
Utilities for loading and saving PNG images.
Definition
mxvk.hpp:31
skeleton
Definition
skeleton.cpp:8
Arguments
Plain data structure returned by proc_args() with all common libmx2 CLI options.
Definition
argz.hpp:730
Arguments::fullscreen
bool fullscreen
Whether fullscreen mode was requested.
Definition
argz.hpp:736
Arguments::enable_vsync
bool enable_vsync
Enable FIFO present mode / v-sync (--enable-vsync).
Definition
argz.hpp:750
Arguments::height
int height
Viewport height in pixels (default: 720).
Definition
argz.hpp:733
Arguments::width
int width
Viewport width in pixels (default: 1280).
Definition
argz.hpp:732
examples
skeleton
skeleton.cpp
Generated by
1.18.0