From Stephan Huber, "attached you'll find a small enhancement for GraphicsWindowCocoa. My

submision adds a getter for the pixel-format. I need this for some
custom software so I can integrate CoreVideo-playback with osg.
"
This commit is contained in:
Robert Osfield
2010-03-25 14:14:46 +00:00
parent 75d1de3d15
commit ecf7a7e3e4
2 changed files with 8 additions and 2 deletions

View File

@@ -25,12 +25,14 @@
@class GraphicsWindowCocoaWindow;
@class GraphicsWindowCocoaGLView;
@class NSOpenGLContext;
@class NSOpenGLPixelFormat;
@class NSWindow;
@class NSView;
#else
class GraphicsWindowCocoaGLView;
class GraphicsWindowCocoaWindow;
class NSOpenGLContext;
class NSOpenGLPixelFormat;
class NSWindow;
class NSView;
#endif
@@ -158,6 +160,7 @@ class GraphicsWindowCocoa : public osgViewer::GraphicsWindow, public osgViewer::
NSOpenGLContext* getContext() { return _context; }
GraphicsWindowCocoaWindow* getWindow() { return _window; }
NSOpenGLPixelFormat* getPixelFormat() { return _pixelformat; }
void setVSync(bool f);
@@ -190,6 +193,7 @@ class GraphicsWindowCocoa : public osgViewer::GraphicsWindow, public osgViewer::
GraphicsWindowCocoaWindow* _window;
GraphicsWindowCocoaGLView* _view;
NSOpenGLContext* _context;
NSOpenGLPixelFormat* _pixelformat;
bool _updateContext;
};

View File

@@ -857,6 +857,8 @@ void GraphicsWindowCocoa::init()
_ownsWindow = false;
_context = NULL;
_window = NULL;
_pixelformat = NULL;
_updateContext = false;
_valid = _initialized = true;
}
@@ -977,8 +979,8 @@ bool GraphicsWindowCocoa::realizeImplementation()
sharedContext = graphicsHandleCocoa->getNSOpenGLContext();
}
NSOpenGLPixelFormat* pixelformat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attr ];
_context = [[NSOpenGLContext alloc] initWithFormat: pixelformat shareContext: sharedContext];
_pixelformat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attr ];
_context = [[NSOpenGLContext alloc] initWithFormat: _pixelformat shareContext: sharedContext];
if (!_context) {
osg::notify(osg::WARN) << "GraphicsWindowCocoa::realizeImplementation :: could not create context" << std::endl;