Kaydet (Commit) 8b384c94 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

support legacy and core context on OSX

Change-Id: Ib8cadb3f182ce49c0ca8b6ccaa95960eb8e5f9ae
üst 6626d135
......@@ -181,7 +181,7 @@ public:
bool supportMultiSampling() const;
static SystemWindowData generateWinData(Window* pParent);
static SystemWindowData generateWinData(Window* pParent, bool bRequestLegacyContext);
private:
SAL_DLLPRIVATE bool initWindow();
......
......@@ -178,6 +178,7 @@ struct SystemWindowData
#if defined( WNT ) // meaningless on Windows
#elif defined( MACOSX )
bool bOpenGL; // create a OpenGL providing NSView
bool bLegacy; // create a 2.1 legacy context, only valid if bOpenGL == true
// Nothing
#elif defined( ANDROID )
// Nothing
......
......@@ -49,17 +49,39 @@ AquaSalObject::AquaSalObject( AquaSalFrame* pFrame, SystemWindowData* pWindowDat
}
if (pWindowData->bOpenGL)
{
NSOpenGLPixelFormatAttribute aAttributes[] =
NSOpenGLPixelFormat* pixFormat = NULL;
if (pWindowData->bLegacy)
{
NSOpenGLPixelFormatAttribute aAttributes[] =
{
NSOpenGLPFADoubleBuffer,
NSOpenGLPFAAlphaSize, 8,
NSOpenGLPFAColorSize, 24,
NSOpenGLPFAMultisample,
NSOpenGLPFASampleBuffers, (NSOpenGLPixelFormatAttribute)1,
NSOpenGLPFASamples, (NSOpenGLPixelFormatAttribute)4,
0
};
pixFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:aAttributes];
}
else
{
NSOpenGLPFADoubleBuffer,
NSOpenGLPFAAlphaSize, 8,
NSOpenGLPFAColorSize, 24,
0
};
NSOpenGLPixelFormatAttribute aAttributes[] =
{
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,
NSOpenGLPFADoubleBuffer,
NSOpenGLPFAAlphaSize, 8,
NSOpenGLPFAColorSize, 24,
NSOpenGLPFAMultisample,
NSOpenGLPFASampleBuffers, (NSOpenGLPixelFormatAttribute)1,
NSOpenGLPFASamples, (NSOpenGLPixelFormatAttribute)4,
0
};
pixFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:aAttributes];
}
NSOpenGLPixelFormat* pixFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:aAttributes];
maSysData.mpNSView = [[NSOpenGLView alloc] initWithFrame: aInitFrame pixelFormat:pixFormat];
}
else
{
......
......@@ -615,7 +615,7 @@ bool OpenGLContext::initWindow()
{
if( !m_pChildWindow )
{
SystemWindowData winData = generateWinData(mpWindow);
SystemWindowData winData = generateWinData(mpWindow, false);
m_pChildWindow = new SystemChildWindow(mpWindow, 0, &winData, false);
m_pChildWindowGC.reset(m_pChildWindow);
}
......@@ -642,7 +642,7 @@ bool OpenGLContext::initWindow()
{
if( !m_pChildWindow )
{
SystemWindowData winData = generateWinData(mpWindow);
SystemWindowData winData = generateWinData(mpWindow, mbRequestLegacyContext);
m_pChildWindow = new SystemChildWindow(mpWindow, 0, &winData, false);
m_pChildWindowGC.reset(m_pChildWindow);
}
......@@ -673,7 +673,7 @@ bool OpenGLContext::initWindow()
bool OpenGLContext::initWindow()
{
const SystemEnvData* pChildSysData = 0;
SystemWindowData winData = generateWinData(mpWindow);
SystemWindowData winData = generateWinData(mpWindow, false);
if( winData.pVisual )
{
if( !m_pChildWindow )
......@@ -725,11 +725,13 @@ bool OpenGLContext::initWindow()
#if defined( WNT ) || defined( MACOSX ) || defined( IOS ) || defined( ANDROID )
SystemWindowData OpenGLContext::generateWinData(Window* /*pParent*/)
SystemWindowData OpenGLContext::generateWinData(Window* /*pParent*/, bool bRequestLegacyContext)
{
(void) bRequestLegacyContext;
SystemWindowData aWinData;
#if defined(MACOSX)
aWinData.bOpenGL = true;
aWinData.bLegacy = bRequestLegacyContext;
#endif
aWinData.nSize = sizeof(aWinData);
return aWinData;
......@@ -750,7 +752,7 @@ void initOpenGLFunctionPointers()
}
SystemWindowData OpenGLContext::generateWinData(Window* pParent)
SystemWindowData OpenGLContext::generateWinData(Window* pParent, bool)
{
SystemWindowData aWinData;
aWinData.nSize = sizeof(aWinData);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment