@@ -11,7 +11,6 @@ use sdl3_main::{app_impl, AppResult};
11
11
use sdl3_sys:: everything:: * ;
12
12
13
13
mod common;
14
- use common:: { dbg_sdl_error, deinit_gpu_window, init_gpu_window, load_bmp, load_shader, Matrix4x4 } ;
15
14
16
15
const SPRITE_COUNT : u32 = 8192 ;
17
16
const GPU_SPRITE_BUFFER_SIZE : u32 = SPRITE_COUNT * std:: mem:: size_of :: < GPUSprite > ( ) as u32 ;
@@ -50,7 +49,7 @@ impl Drop for AppState {
50
49
SDL_ReleaseGPUBuffer ( self . device , self . sprite_data_buffer ) ;
51
50
}
52
51
53
- deinit_gpu_window ( self . device , self . window ) ;
52
+ common :: deinit_gpu_window ( self . device , self . window ) ;
54
53
}
55
54
}
56
55
}
@@ -141,9 +140,11 @@ impl CPUSprite {
141
140
impl AppState {
142
141
fn app_init ( ) -> Option < Box < Mutex < AppState > > > {
143
142
unsafe {
143
+ common:: set_framerate_hint ( 60 ) ;
144
+
144
145
const TITLE : & CStr = c"Pull Sprite Batch Example" ;
145
146
let Some ( ( window, device) ) =
146
- init_gpu_window ( TITLE . as_ptr ( ) , SDL_WindowFlags :: default ( ) )
147
+ common :: init_gpu_window ( TITLE . as_ptr ( ) , SDL_WindowFlags :: default ( ) )
147
148
else {
148
149
return None ;
149
150
} ;
@@ -167,15 +168,15 @@ impl AppState {
167
168
present_mode,
168
169
) ;
169
170
170
- let vert_shader = load_shader ( device, "PullSpriteBatch.vert" ) ;
171
+ let vert_shader = common :: load_shader ( device, "PullSpriteBatch.vert" ) ;
171
172
if vert_shader. is_null ( ) {
172
- dbg_sdl_error ( "failed to load vert shader" ) ;
173
+ common :: dbg_sdl_error ( "failed to load vert shader" ) ;
173
174
return None ;
174
175
}
175
176
176
- let frag_shader = load_shader ( device, "TexturedQuadColor.frag" ) ;
177
+ let frag_shader = common :: load_shader ( device, "TexturedQuadColor.frag" ) ;
177
178
if frag_shader. is_null ( ) {
178
- dbg_sdl_error ( "failed to load frag shader" ) ;
179
+ common :: dbg_sdl_error ( "failed to load frag shader" ) ;
179
180
return None ;
180
181
}
181
182
@@ -210,9 +211,9 @@ impl AppState {
210
211
SDL_ReleaseGPUShader ( device, vert_shader) ;
211
212
SDL_ReleaseGPUShader ( device, frag_shader) ;
212
213
213
- let image_ptr = load_bmp ( "ravioli_atlas.bmp" ) ;
214
+ let image_ptr = common :: load_bmp ( "ravioli_atlas.bmp" ) ;
214
215
if image_ptr. is_null ( ) {
215
- dbg_sdl_error ( "failed to load image" ) ;
216
+ common :: dbg_sdl_error ( "failed to load image" ) ;
216
217
return None ;
217
218
}
218
219
let image = & mut * image_ptr;
@@ -364,7 +365,7 @@ fn draw_sprites(app: &mut AppState) -> AppResult {
364
365
unsafe {
365
366
let command_buffer = SDL_AcquireGPUCommandBuffer ( app. device ) ;
366
367
if command_buffer. is_null ( ) {
367
- dbg_sdl_error ( "AcquireGPUCommandBuffer failed" ) ;
368
+ common :: dbg_sdl_error ( "AcquireGPUCommandBuffer failed" ) ;
368
369
return AppResult :: Failure ;
369
370
}
370
371
@@ -376,7 +377,7 @@ fn draw_sprites(app: &mut AppState) -> AppResult {
376
377
null_mut ( ) ,
377
378
null_mut ( ) ,
378
379
) {
379
- dbg_sdl_error ( "WaitAndAcquireGPUSwapchainTexture failed" ) ;
380
+ common :: dbg_sdl_error ( "WaitAndAcquireGPUSwapchainTexture failed" ) ;
380
381
return AppResult :: Failure ;
381
382
}
382
383
@@ -386,7 +387,7 @@ fn draw_sprites(app: &mut AppState) -> AppResult {
386
387
SDL_MapGPUTransferBuffer ( app. device , app. sprite_data_transfer_buffer , true )
387
388
as * mut GPUSprite ;
388
389
if data_ptr. is_null ( ) {
389
- dbg_sdl_error ( "failed to map gpu transfer buffer" ) ;
390
+ common :: dbg_sdl_error ( "failed to map gpu transfer buffer" ) ;
390
391
return AppResult :: Failure ;
391
392
}
392
393
@@ -445,8 +446,11 @@ fn draw_sprites(app: &mut AppState) -> AppResult {
445
446
} ,
446
447
1 ,
447
448
) ;
449
+
450
+ use common:: Matrix4x4 ;
448
451
const CAMERA_MATRIX : Matrix4x4 =
449
452
Matrix4x4 :: create_orthographic_off_center ( 0.0 , 640.0 , 480.0 , 0.0 , 0.0 , -1.0 ) ;
453
+
450
454
SDL_PushGPUVertexUniformData (
451
455
command_buffer,
452
456
0 ,
0 commit comments