29#include "../../SDL_internal.h"
31#if SDL_VIDEO_DRIVER_UIKIT && (SDL_VIDEO_RENDER_METAL || SDL_VIDEO_VULKAN)
33#import "../SDL_sysvideo.h"
39@implementation SDL_uikitmetalview
44 return [CAMetalLayer class];
47- (instancetype)initWithFrame:(CGRect)frame
50 if ((
self = [super initWithFrame:
frame])) {
51 self.tag = METALVIEW_TAG;
52 self.layer.contentsScale =
scale;
53 [
self updateDrawableSize];
62 [
super layoutSubviews];
63 [
self updateDrawableSize];
66- (
void)updateDrawableSize
68 CGSize
size =
self.bounds.size;
69 size.width *=
self.layer.contentsScale;
70 size.height *=
self.layer.contentsScale;
71 ((CAMetalLayer *)
self.
layer).drawableSize =
size;
83 if ([view isKindOfClass:[SDL_uikitmetalview
class]]) {
84 return (SDL_uikitmetalview *)view;
93 if ([
data.uiwindow.screen respondsToSelector:
@selector(nativeScale)]) {
99 SDL_uikitmetalview *metalview
100 = [[SDL_uikitmetalview alloc] initWithFrame:view.frame
102 [metalview setSDLWindow:window];
113 SDL_uikitmetalview* metalview = [view viewWithTag:METALVIEW_TAG];
115 CAMetalLayer *
layer = (CAMetalLayer*)metalview.layer;
118 *
w =
layer.drawableSize.width;
121 *
h =
layer.drawableSize.height;
#define SDL_GetWindowSize
SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char const char SDL_SCANF_FORMAT_STRING const char return SDL_ThreadFunction const char void return Uint32 return Uint32 void
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLenum GLenum GLenum GLenum scale
GLenum GLuint GLint GLint layer
GLfloat GLfloat GLfloat GLfloat h
GLubyte GLubyte GLubyte GLubyte w
@ SDL_WINDOW_ALLOW_HIGHDPI
EGLSurface EGLNativeWindowType * window
The type used to identify a window.