17#include <SDL3/SDL_main.h>
20#if defined(__ANDROID__) && !defined(FOUNDATION_EXAMPLES_IMPLEMENTATION)
24int Foundation_ExampleMain(
int argc,
char** argv);
25extern "C" int SDL_main(
int argc,
char** argv)
27 return Foundation_ExampleMain(argc, argv);
29#define main Foundation_ExampleMain
35using namespace RenderCore;
145 "Drag orbit | 2-finger/right-drag pan | pinch/wheel zoom | WASD move";
150 quat
rot = quat(1.0f, 0.0f, 0.0f, 0.0f);
167 void (*processEvent)(SDL_Event*) =
nullptr);
181 float step = 0.01f,
const char* unit =
"x",
bool draggable =
true);
189 int channels = 4,
int strideBytes = 0);
200 size_t now = SDL_GetTicksNS();
204 fps = 1e9 * (
static_cast<float>(
frames) / delta);
#define GLOBAL_ALLOC
Definition Allocator.hpp:240
bool Examples_ShouldClose(SDL_Window *window, ExampleVulkanContext &ctx, SDL_Event *outEvent=nullptr)
Definition Examples.cpp:608
void Examples_PopColor(ExampleInputState &input)
Definition Examples.cpp:693
bool Examples_Button(ExampleInputState &input, StringView text)
Definition Examples.cpp:709
void Examples_PopScale(ExampleInputState &input)
Definition Examples.cpp:675
void Examples_BeginFrameInput(ExampleInputState &input)
Definition Examples.cpp:630
constexpr int Examples_SDLWindowFlagsVulkan
Definition Examples.hpp:38
void Examples_PushColor(ExampleInputState &input, int col32)
Definition Examples.cpp:681
bool Examples_Slider(ExampleInputState &input, StringView label, float &value, float minValue, float maxValue, float step=0.01f, const char *unit="x", bool draggable=true)
Definition Examples.cpp:722
void Examples_SameLine(ExampleInputState &input, int spacing=16)
Definition Examples.cpp:662
void Examples_Text(ExampleInputState &input, StringView text)
Definition Examples.cpp:699
float Examples_GetTime()
Definition Examples.cpp:850
ExampleVulkanContext Examples_InitVulkan(SDL_Window *window, int argc, char **argv, RendererDesc desc={})
Definition Examples.cpp:502
void Examples_PushScale(ExampleInputState &input, int scale)
Definition Examples.cpp:668
void Examples_ResetRenderer(ExampleVulkanContext &ctx, RendererDesc desc={})
Definition Examples.cpp:783
void Examples_NewFrame(Renderer *renderer)
Definition Examples.cpp:791
void Examples_DestroyVulkan(SDL_Window *window, ExampleVulkanContext &ctx)
Definition Examples.cpp:815
bool Examples_CreateSwapchain(SDL_Window *window, RHIDevice *device, RHIDeviceScopedHandle< RHISurface > &outSurface, RHIDeviceScopedHandle< RHISwapchain > &outSwapchain)
Definition Examples.cpp:445
void Examples_DumpAndOpenImage(RHIApplication const &app, StringView path, RHIExtent2D extent, void const *data, int channels=4, int strideBytes=0)
Definition Examples.cpp:834
void Examples_BeginControls(ExampleInputState &input, int x=16, int y=16)
Definition Examples.cpp:643
void Examples_ReportFatalException()
Definition Examples.cpp:479
Span< const RenderUtils::CSDebugTextData > Examples_HudLines(ExampleInputState const &input)
Definition Examples.cpp:778
void Examples_UpdateCameraUBO(RendererUBO &ubo, Renderer *renderer, FExampleOrbitCamera &camera, RendererConfig const &config)
Definition Examples.cpp:488
bool Examples_PollEvents(SDL_Window *window, ExampleVulkanContext &ctx, ExampleInputState &input, SDL_Event *outLastEvent=nullptr, void(*processEvent)(SDL_Event *)=nullptr)
Definition Examples.cpp:577
The root object of everything RHI. Implementation of this class inherently defines the RHI backend.
Definition Application.hpp:24
Definition Device.hpp:246
Scoped move-only RAII handle wrapper for RHI Objects.
Definition Details.hpp:85
Renderer implementing a Frame Graph system with automatic resource tracking and synchronization.
Definition Renderer.hpp:377
std::vector< T, StlAllocator< T > > Vector
std::vector with explicit Foundation::Core::StlAllocator constructor
Definition Container.hpp:149
std::array< T, Size > Array
Alias for std::array
Definition Container.hpp:45
std::basic_string_view< char > StringView
Alias for std::basic_string_view<char>
Definition Container.hpp:56
std::unique_ptr< T, Deleter > UniquePtr
std::unique_ptr with custom deleter that uses a Foundation::Core::Allocator to deallocate memory.
Definition Allocator.hpp:180
std::span< T > Span
Alias for std::span
Definition Container.hpp:62
vec2 float2
Definition Math.hpp:27
vec3 float3
Definition Math.hpp:26
glm::vec< 2, uint32_t > RHIExtent2D
Definition Common.hpp:10
Definition Allocator.hpp:6
Definition Examples.hpp:57
int x
Definition Examples.hpp:59
int h
Definition Examples.hpp:62
int y
Definition Examples.hpp:60
int w
Definition Examples.hpp:61
Definition Examples.hpp:194
size_t lastTick
Definition Examples.hpp:195
float fps
Definition Examples.hpp:197
float Update()
Definition Examples.hpp:198
size_t frames
Definition Examples.hpp:196
Definition Examples.hpp:66
bool capturedByHud
Definition Examples.hpp:71
SDL_FingerID fingerId
Definition Examples.hpp:67
bool active
Definition Examples.hpp:70
float2 position
Definition Examples.hpp:68
float2 previous
Definition Examples.hpp:69
Definition Examples.hpp:45
RHIDeviceScopedHandle< RHISurface > surface
Definition Examples.hpp:50
RHIApplicationScopedHandle< RHIDevice > device
Definition Examples.hpp:47
RHIDeviceScopedHandle< RHIPipelineStateCache > psoCache
Definition Examples.hpp:49
UniquePtr< VulkanApplication > app
Definition Examples.hpp:46
UniquePtr< Presenter > presenter
Definition Examples.hpp:52
UniquePtr< Renderer > renderer
Definition Examples.hpp:53
RHIDeviceScopedHandle< RHISwapchain > swapchain
Definition Examples.hpp:51
UniquePtr< JobSystem > jobs
Definition Examples.hpp:48
Definition Examples.hpp:143
mat4 view
Definition Examples.hpp:154
float3 center
Definition Examples.hpp:147
float zNear
Definition Examples.hpp:151
float aspect
Definition Examples.hpp:153
quat rot
Definition Examples.hpp:150
void RefreshMatrices()
Definition Examples.cpp:898
float radius
Definition Examples.hpp:149
float3 position
Definition Examples.hpp:148
mat4 proj
Definition Examples.hpp:155
float fovY
Definition Examples.hpp:152
float moveSpeed
Definition Examples.hpp:156
static constexpr char kControlsText[]
Definition Examples.hpp:144
Parameters for Renderer creation.
Definition Renderer.hpp:27
Definition Renderer.hpp:122
Definition Renderer.hpp:11