gl_ios.m raw

   1  // SPDX-License-Identifier: Unlicense OR MIT
   2  
   3  // +build darwin,ios
   4  
   5  @import UIKit;
   6  @import OpenGLES;
   7  
   8  #include "_cgo_export.h"
   9  
  10  int gio_renderbufferStorage(CFTypeRef ctxRef, CFTypeRef layerRef, GLenum buffer) {
  11  	EAGLContext *ctx = (__bridge EAGLContext *)ctxRef;
  12  	CAEAGLLayer *layer = (__bridge CAEAGLLayer *)layerRef;
  13  	return (int)[ctx renderbufferStorage:buffer fromDrawable:layer];
  14  }
  15  
  16  int gio_presentRenderbuffer(CFTypeRef ctxRef, GLenum buffer) {
  17  	EAGLContext *ctx = (__bridge EAGLContext *)ctxRef;
  18  	return (int)[ctx presentRenderbuffer:buffer];
  19  }
  20  
  21  int gio_makeCurrent(CFTypeRef ctxRef) {
  22  	EAGLContext *ctx = (__bridge EAGLContext *)ctxRef;
  23  	return (int)[EAGLContext setCurrentContext:ctx];
  24  }
  25  
  26  CFTypeRef gio_createContext(void) {
  27  	EAGLContext *ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];
  28  	if (ctx == nil) {
  29  		return nil;
  30  	}
  31  	return CFBridgingRetain(ctx);
  32  }
  33  
  34  CFTypeRef gio_createGLLayer(void) {
  35  	CAEAGLLayer *layer = [[CAEAGLLayer layer] init];
  36  	if (layer == nil) {
  37  		return nil;
  38  	}
  39  	layer.drawableProperties = @{kEAGLDrawablePropertyColorFormat: kEAGLColorFormatSRGBA8};
  40  	layer.opaque = YES;
  41  	layer.anchorPoint = CGPointMake(0, 0);
  42  	return CFBridgingRetain(layer);
  43  }
  44