Я пытаюсь перейти на OpenGL 4.1 на MacOS.
Для этого я пытаюсь использовать технику MultiSample.
Вот мой код выбора формата пикселей:
GLint answer;
int numAttribs = 0;
CGLRendererInfoObj rend;
bool multisampleSupport = false;
CGLQueryRendererInfo(CGDisplayIDToOpenGLDisplayMask
(kCGDirectMainDisplay), &rend, &answer);
CGLDescribeRenderer(rend, 0, kCGLRPSampleModes, &answer);
if ((answer & kCGLMultisampleBit) != 0)
multisampleSupport = true;
NSOpenGLPixelFormatAttribute attributes[64] = { 0 };
attributes[numAttribs++] = NSOpenGLPFAOpenGLProfile;
attributes[numAttribs++] = NSOpenGLProfileVersion4_1Core;
attributes[numAttribs++] = NSOpenGLPFADoubleBuffer;
attributes[numAttribs++] = NSOpenGLPFAClosestPolicy;
attributes[numAttribs++] = NSOpenGLPFANoRecovery;
attributes[numAttribs++] = NSOpenGLPFAColorSize;
attributes[numAttribs++] = (NSOpenGLPixelFormatAttribute) 24;
attributes[numAttribs++] = NSOpenGLPFAAlphaSize;
attributes[numAttribs++] = (NSOpenGLPixelFormatAttribute) 8;
attributes[numAttribs++] = NSOpenGLPFADepthSize;
attributes[numAttribs++] = (NSOpenGLPixelFormatAttribute) 24;
attributes[numAttribs++] = NSOpenGLPFAStencilSize;
attributes[numAttribs++] = (NSOpenGLPixelFormatAttribute) 1;
if (multisampleSupport)
{
attributes[numAttribs++] = NSOpenGLPFAMultisample;
attributes[numAttribs++] = NSOpenGLPFASampleBuffers;
attributes[numAttribs++] = (NSOpenGLPixelFormatAttribute) 1;
attributes[numAttribs++] = NSOpenGLPFASamples;
attributes[numAttribs++] = (NSOpenGLPixelFormatAttribute) 4;
}
_masterPixelFormat = (WCOGLPixelFormatRef)[[NSOpenGLPixelFormat alloc] initWithAttributes:(NSOpenGLPixelFormatAttribute*) attributes];
Если я устанавливаю multisampleSupport, принудительно устанавливается в FALSE - все работает (конечно, без сглаживания). Но если для него установлено значение true (как и должно быть), поскольку средство визуализации поддерживает его, я получаю белое окно.
Да, я знаю, что OpenGL устарел, но он все равно должен работать. Что я делаю не так?