17#include <SDL3/SDL_dialog.h>
18#include <SDL3/SDL_main.h>
21#if defined(__ANDROID__) && !defined(FOUNDATION_EXAMPLES_IMPLEMENTATION)
25int Foundation_ExampleMain(
int argc,
char** argv);
26extern "C" int SDL_main(
int argc,
char** argv)
28 return Foundation_ExampleMain(argc, argv);
30#define main Foundation_ExampleMain
36using namespace RenderCore;
146 "Drag orbit | 2-finger/right-drag pan | pinch/wheel zoom | WASD move";
151 quat
rot = quat(1.0f, 0.0f, 0.0f, 0.0f);
173 void (*processEvent)(SDL_Event*) =
nullptr);
187 float step = 0.01f,
const char* unit =
"x",
bool draggable =
true);
195 int channels = 4,
int strideBytes = 0);
208 size_t now = SDL_GetTicksNS();
212 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:701
void Examples_PopColor(ExampleInputState &input)
Definition Examples.cpp:786
bool Examples_Button(ExampleInputState &input, StringView text)
Definition Examples.cpp:802
void Examples_PopScale(ExampleInputState &input)
Definition Examples.cpp:768
void Examples_BeginFrameInput(ExampleInputState &input)
Definition Examples.cpp:723
constexpr int Examples_SDLWindowFlagsVulkan
Definition Examples.hpp:39
void Examples_PushColor(ExampleInputState &input, int col32)
Definition Examples.cpp:774
RHIExtent2D Examples_RenderExtent(RHIExtent2D presentExtent, float scale=1.0f)
Definition Examples.cpp:588
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:815
void Examples_SameLine(ExampleInputState &input, int spacing=16)
Definition Examples.cpp:755
void Examples_Text(ExampleInputState &input, StringView text)
Definition Examples.cpp:792
float Examples_GetTime()
Definition Examples.cpp:959
ExampleVulkanContext Examples_InitVulkan(SDL_Window *window, int argc, char **argv, RendererDesc desc={})
Definition Examples.cpp:595
void Examples_PushScale(ExampleInputState &input, int scale)
Definition Examples.cpp:761
void Examples_ResetRenderer(ExampleVulkanContext &ctx, RendererDesc desc={})
Definition Examples.cpp:876
float Examples_MaxRenderScale(RHIExtent2D presentExtent)
Definition Examples.cpp:573
void Examples_NewFrame(Renderer *renderer)
Definition Examples.cpp:884
void Examples_DestroyVulkan(SDL_Window *window, ExampleVulkanContext &ctx)
Definition Examples.cpp:908
bool Examples_CreateSwapchain(SDL_Window *window, RHIDevice *device, RHIDeviceScopedHandle< RHISurface > &outSurface, RHIDeviceScopedHandle< RHISwapchain > &outSwapchain)
Definition Examples.cpp:516
void Examples_DumpAndOpenImage(RHIApplication const &app, StringView path, RHIExtent2D extent, void const *data, int channels=4, int strideBytes=0)
Definition Examples.cpp:927
void Examples_BeginControls(ExampleInputState &input, int x=16, int y=16)
Definition Examples.cpp:736
String Examples_PromptForFile(SDL_DialogFileFilter filter, StringView localCopyStem="Picked", StringView(*extensionFromMagic)(Span< const unsigned char >)=nullptr)
Definition Examples.cpp:943
void Examples_ReportFatalException()
Definition Examples.cpp:550
Span< const RenderUtils::CSDebugTextData > Examples_HudLines(ExampleInputState const &input)
Definition Examples.cpp:871
void Examples_UpdateCameraUBO(RendererUBO &ubo, Renderer *renderer, FExampleOrbitCamera &camera, RendererConfig const &config)
Definition Examples.cpp:559
bool Examples_PollEvents(SDL_Window *window, ExampleVulkanContext &ctx, ExampleInputState &input, SDL_Event *outLastEvent=nullptr, void(*processEvent)(SDL_Event *)=nullptr)
Definition Examples.cpp:670
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:404
std::vector< T, StlAllocator< T > > Vector
std::vector with explicit Foundation::Core::StlAllocator constructor
Definition Container.hpp:149
std::basic_string< char, std::char_traits< char >, StlDefaultAllocator< char > > String
Alias for std::basic_string<char>, without an explicit allocator constructor.
Definition Container.hpp:120
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:58
int x
Definition Examples.hpp:60
int h
Definition Examples.hpp:63
int y
Definition Examples.hpp:61
int w
Definition Examples.hpp:62
Definition Examples.hpp:202
size_t lastTick
Definition Examples.hpp:203
float fps
Definition Examples.hpp:205
float Update()
Definition Examples.hpp:206
size_t frames
Definition Examples.hpp:204
Definition Examples.hpp:67
bool capturedByHud
Definition Examples.hpp:72
SDL_FingerID fingerId
Definition Examples.hpp:68
bool active
Definition Examples.hpp:71
float2 position
Definition Examples.hpp:69
float2 previous
Definition Examples.hpp:70
Definition Examples.hpp:46
RHIDeviceScopedHandle< RHISurface > surface
Definition Examples.hpp:51
RHIApplicationScopedHandle< RHIDevice > device
Definition Examples.hpp:48
RHIDeviceScopedHandle< RHIPipelineStateCache > psoCache
Definition Examples.hpp:50
UniquePtr< VulkanApplication > app
Definition Examples.hpp:47
UniquePtr< Presenter > presenter
Definition Examples.hpp:53
UniquePtr< Renderer > renderer
Definition Examples.hpp:54
RHIDeviceScopedHandle< RHISwapchain > swapchain
Definition Examples.hpp:52
UniquePtr< JobSystem > jobs
Definition Examples.hpp:49
Definition Examples.hpp:144
mat4 view
Definition Examples.hpp:155
float3 center
Definition Examples.hpp:148
float zNear
Definition Examples.hpp:152
float aspect
Definition Examples.hpp:154
quat rot
Definition Examples.hpp:151
void RefreshMatrices()
Definition Examples.cpp:1007
float radius
Definition Examples.hpp:150
float3 position
Definition Examples.hpp:149
mat4 proj
Definition Examples.hpp:156
float fovY
Definition Examples.hpp:153
float moveSpeed
Definition Examples.hpp:157
static constexpr char kControlsText[]
Definition Examples.hpp:145
Parameters for Renderer creation.
Definition Renderer.hpp:47
Definition Renderer.hpp:124
Definition Renderer.hpp:11