65 lines
1.7 KiB
Plaintext
65 lines
1.7 KiB
Plaintext
|
#include <OpenGL/gl.h>
|
||
|
|
||
|
struct gsoo_opengl_state
|
||
|
{
|
||
|
NSOpenGLContext* Context;
|
||
|
};
|
||
|
|
||
|
@interface gsoo_OpenGLView: NSOpenGLView @end
|
||
|
@implementation gsoo_OpenGLView : NSOpenGLView
|
||
|
- (void)
|
||
|
reshape
|
||
|
{
|
||
|
// TODO: framebufferWidth and Height were globals in the code I was pulling from
|
||
|
// Need some way to get the new window height in here.
|
||
|
CGRect FrameRect = self.frame;
|
||
|
glViewport(0, 0, FrameRect.size.width, FrameRect.size.height);
|
||
|
//glViewport(0, 0, framebufferWidth, framebufferHeight);
|
||
|
}
|
||
|
@end
|
||
|
|
||
|
static NSOpenGLContext*
|
||
|
gsoo_CreateOpenGLContext(NSWindow* Window, uint32_t Width, uint32_t Height, int32_t EnableVSync)
|
||
|
{
|
||
|
NSOpenGLContext* Result = 0;
|
||
|
NSOpenGLPixelFormatAttribute PixelFormatAttributes[] = {
|
||
|
NSOpenGLPFAClosestPolicy,
|
||
|
NSOpenGLPFADoubleBuffer,
|
||
|
NSOpenGLPFASampleBuffers,
|
||
|
0,
|
||
|
0
|
||
|
};
|
||
|
|
||
|
NSOpenGLPixelFormat* PixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes: PixelFormatAttributes];
|
||
|
Result = [[NSOpenGLContext alloc] initWithFormat: PixelFormat shareContext: 0];
|
||
|
|
||
|
if (!Result)
|
||
|
{
|
||
|
// TODO: Assert/Handle
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
[Result makeCurrentContext];
|
||
|
GLint VSync = EnableVSync;
|
||
|
[Result setValues: &VSync forParameter: NSOpenGLCPSwapInterval];
|
||
|
|
||
|
// Set Backbuffer Resolution
|
||
|
GLint BackbufferDimensions[] = { Width, Height };
|
||
|
CGLSetParameter(Result.CGLContextObj, kCGLCPSurfaceBackingSize, BackbufferDimensions);
|
||
|
CGLEnable(Result.CGLContextObj, kCGLCESurfaceBackingSize);
|
||
|
|
||
|
//
|
||
|
gsoo_OpenGLView* View = [[gsoo_OpenGLView alloc] init];
|
||
|
[Window setContentView: View];
|
||
|
[View setOpenGLContext: Result];
|
||
|
[View setPixelFormat: PixelFormat];
|
||
|
[Result setView: View];
|
||
|
|
||
|
return Result;
|
||
|
}
|
||
|
|
||
|
static void
|
||
|
gsoo_SwapBuffers(NSOpenGLContext* OpenGLContext)
|
||
|
{
|
||
|
[OpenGLContext flushBuffer];
|
||
|
}
|