1///////////////////////////////////////////////////////////////////////////// 2// Name: src/cocoa/glcanvas.mm 3// Purpose: wxGLContext, wxGLCanvas 4// Author: David Elliott 5// Modified by: 6// Created: 2004/09/29 7// Copyright: (c) 2004 David Elliott 8// Licence: wxWindows licence 9///////////////////////////////////////////////////////////////////////////// 10 11#include "wx/wxprec.h" 12 13#if wxUSE_GLCANVAS 14 15#ifndef WX_PRECOMP 16 #include "wx/app.h" 17#endif //WX_PRECOMP 18#include "wx/glcanvas.h" 19 20#include "wx/cocoa/autorelease.h" 21 22#import <AppKit/NSOpenGL.h> 23#import <AppKit/NSOpenGLView.h> 24 25wxGLContext::wxGLContext(wxGLCanvas *win, const wxGLContext *other) 26{ 27 // TODO 28} 29 30wxGLContext::~wxGLContext() 31{ 32} 33 34void wxGLContext::SetCurrent(const wxGLCanvas& win) const 35{ 36 [[win.GetNSOpenGLView() openGLContext] makeCurrentContext]; 37} 38 39IMPLEMENT_CLASS(wxGLCanvas, wxWindow) 40// WX_IMPLEMENT_COCOA_OWNER(wxGLCanvas,NSOpenGLView,NSView,NSView) 41 42bool wxGLCanvas::Create(wxWindow *parent, 43 wxWindowID winid, 44 const wxPoint& pos, 45 const wxSize& size, 46 long style, 47 const wxString& name, 48 const int *attribList, 49 const wxPalette& palette) 50{ 51 wxAutoNSAutoreleasePool pool; 52 if(!CreateBase(parent,winid,pos,size,style,wxDefaultValidator,name)) 53 return false; 54 SetNSView([[NSOpenGLView alloc] initWithFrame: MakeDefaultNSRect(size) 55 pixelFormat:[NSOpenGLView defaultPixelFormat]]); 56 [m_cocoaNSView release]; 57 if(m_parent) 58 m_parent->CocoaAddChild(this); 59 SetInitialFrameRect(pos,size); 60 61 return true; 62} 63 64wxGLCanvas::~wxGLCanvas() 65{ 66} 67 68void wxGLCanvas::SwapBuffers() 69{ 70 [[GetNSOpenGLView() openGLContext] flushBuffer]; 71} 72 73#endif // wxUSE_GLCANVAS 74