| /* |
| * Copyright 2024 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #import "gl_context_helper.h" |
| |
| #import <AvailabilityMacros.h> |
| #import <OpenGL/OpenGL.h> |
| #import <dlfcn.h> |
| #import <cstdio> |
| |
| // cribbed from https://skia.googlesource.com/skia/+/78f0b8a7eda92e59943164caaaa00e01404643b9/tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp#46 |
| bool initialize_gl_mac() { |
| CGLPixelFormatAttribute attributes[] = { |
| // base parameters |
| kCGLPFAOpenGLProfile, |
| (CGLPixelFormatAttribute) kCGLOGLPVersion_3_2_Core, |
| kCGLPFADoubleBuffer, |
| (CGLPixelFormatAttribute)NULL |
| }; |
| |
| CGLPixelFormatObj pixFormat; |
| GLint npix; |
| CGLChoosePixelFormat(attributes, &pixFormat, &npix); |
| if (nullptr == pixFormat) { |
| printf("CGLChoosePixelFormat failed."); |
| return false; |
| } |
| |
| CGLContextObj context; |
| CGLCreateContext(pixFormat, nullptr, &context); |
| CGLReleasePixelFormat(pixFormat); |
| |
| if (!context) { |
| printf("CGLCreateContext failed."); |
| return false; |
| } |
| |
| CGLSetCurrentContext(context); |
| return true; |
| } |