From 771da4cd6e5b54eb6b41043563f4fc7a7f5ce202 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sun, 10 Apr 2022 21:38:01 +1000 Subject: [PATCH] Start making OpenGL 1.1 fallback 64 bit compatible --- src/Graphics_GL1.c | 29 +++++++++++++++++------------ src/interop_ios.m | 21 +-------------------- 2 files changed, 18 insertions(+), 32 deletions(-) diff --git a/src/Graphics_GL1.c b/src/Graphics_GL1.c index c82d603ac..a3068a0d0 100644 --- a/src/Graphics_GL1.c +++ b/src/Graphics_GL1.c @@ -200,16 +200,19 @@ static void LoadCoreFuncs(void) { *-------------------------------------------------------Index buffers-----------------------------------------------------* *#########################################################################################################################*/ #ifndef CC_BUILD_GL11 -static GLuint GL_GenAndBind(GLenum target) { +static GfxResourceID GL_GenBuffer(void) { GLuint id; _glGenBuffers(1, &id); - _glBindBuffer(target, id); return id; } +static GfxResourceID (*_genBuffer)(void) = GL_GenBuffer; + GfxResourceID Gfx_CreateIb(void* indices, int indicesCount) { - GLuint id = GL_GenAndBind(GL_ELEMENT_ARRAY_BUFFER); - cc_uint32 size = indicesCount * 2; + GfxResourceID id = _genBuffer(); + cc_uint32 size = indicesCount * 2; + + _glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, id); _glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, indices, GL_STATIC_DRAW); return id; } @@ -234,7 +237,9 @@ void Gfx_DeleteIb(GfxResourceID* ib) { } *#########################################################################################################################*/ #ifndef CC_BUILD_GL11 GfxResourceID Gfx_CreateVb(VertexFormat fmt, int count) { - return GL_GenAndBind(GL_ARRAY_BUFFER); + GfxResourceID id = _genBuffer(); + _glBindBuffer(GL_ARRAY_BUFFER, id); + return id; } void Gfx_BindVb(GfxResourceID vb) { _glBindBuffer(GL_ARRAY_BUFFER, (GLuint)vb); } @@ -306,12 +311,14 @@ GfxResourceID Gfx_CreateVb2(void* vertices, VertexFormat fmt, int count) { *#########################################################################################################################*/ #ifndef CC_BUILD_GL11 GfxResourceID Gfx_CreateDynamicVb(VertexFormat fmt, int maxVertices) { - GLuint id; + GfxResourceID id; cc_uint32 size; if (Gfx.LostContext) return 0; - id = GL_GenAndBind(GL_ARRAY_BUFFER); + id = _genBuffer(); size = maxVertices * strideSizes[fmt]; + + _glBindBuffer(GL_ARRAY_BUFFER, id); _glBufferData(GL_ARRAY_BUFFER, size, NULL, GL_DYNAMIC_DRAW); return id; } @@ -509,10 +516,8 @@ static void APIENTRY fake_deleteBuffers(GLsizei n, const GLuint *buffers) { Mem_Free((void*)buffers[0]); } -static void APIENTRY fake_genBuffers(GLsizei n, GLuint *buffers) { - fake_buffer* buffer = (fake_buffer*)Mem_TryAlloc(1, sizeof(fake_buffer)); - buffer->data = NULL; - buffers[0] = (GLuint)buffer; +static GfxResourceID GenFakeBuffer(void) { + return (GfxResourceID)Mem_TryAllocCleared(1, sizeof(fake_buffer)); } static void APIENTRY fake_bufferData(GLenum target, cc_uintptr size, const GLvoid* data, GLenum usage) { @@ -549,7 +554,7 @@ static void OpenGL11Fallback(void) { customMipmapsLevels = false; _glBindBuffer = fake_bindBuffer; _glDeleteBuffers = fake_deleteBuffers; - _glGenBuffers = fake_genBuffers; _glBufferData = fake_bufferData; + _genBuffer = GenFakeBuffer; _glBufferData = fake_bufferData; _glBufferSubData = fake_bufferSubData; _glDrawElements = fake_drawElements; _glColorPointer = fake_colorPointer; diff --git a/src/interop_ios.m b/src/interop_ios.m index 0a51eab8b..7c0cc2f8f 100644 --- a/src/interop_ios.m +++ b/src/interop_ios.m @@ -300,7 +300,7 @@ void Window_DrawFramebuffer(Rect2D r) { rect.origin.y = WindowInfo.Height - r.Y - r.Height; rect.size.width = r.Width; rect.size.height = r.Height; - view_handle.layer.contents = CFBridgingRelease(CGBitmapContextCreateImage(win_ctx)); + win_handle.layer.contents = CFBridgingRelease(CGBitmapContextCreateImage(win_ctx)); // TODO always redraws entire launcher which is quite terrible performance wise //[win_handle setNeedsDisplayInRect:rect]; } @@ -621,8 +621,6 @@ static NSString* cellID = @"CC_Cell"; btn->OnClick(btn); } -<<<<<<< HEAD -======= - (void)handleTextChanged:(id)sender { struct LWidget* w = FindWidgetForView(sender); if (w == NULL) return; @@ -669,7 +667,6 @@ void LBackend_Init(void) { /*########################################################################################################################* *------------------------------------------------------ButtonWidget-------------------------------------------------------* *#########################################################################################################################*/ ->>>>>>> b2e96605 (ios: WIP on native table widget) void LBackend_ButtonInit(struct LButton* w, int width, int height) { UIButton* btn = [[UIButton alloc] init]; btn.frame = CGRectMake(0, 0, width, height); @@ -720,22 +717,6 @@ void LBackend_CheckboxDraw(struct LCheckbox* w) { /*########################################################################################################################* *------------------------------------------------------InputWidget--------------------------------------------------------* *#########################################################################################################################*/ -<<<<<<< HEAD -static void LBackend_HandleInput(id ipt_obj) { - struct LWidget* w = FindWidgetForView(ipt_obj); - if (w == NULL) return; - - UITextField* src = (UITextField*)ipt_obj; - const char* str = [[src text] UTF8String]; - - struct LInput* ipt = (struct LInput*)w; - ipt->text.length = 0; - String_AppendUtf8(&ipt->text, str, String_Length(str)); - if (ipt->TextChanged) ipt->TextChanged(ipt); -} - -======= ->>>>>>> b2e96605 (ios: WIP on native table widget) void LBackend_InputInit(struct LInput* w, int width) { UITextField* fld = [[UITextField alloc] init]; fld.frame = CGRectMake(0, 0, width, 30);