首页 > 解决方案 > macOS 10.13 SDK 是否存在破坏 CGLCreatePBuffer 的解决方法?

问题描述

我有一段简单的代码可以在针对 macOS 10.12 SDK 编译时成功创建 pbuffers,但是对 10.13 SDK 的更新会破坏事情。我知道这项技术已经过时了。

#import <Cocoa/Cocoa.h>
#import <OpenGL/OpenGL.h>
#import <OpenGL/gl3.h>
#import <OpenGL/glext.h>

int main( int argc, const char* argv[] )
{
    GLsizei width = 1024;
    GLsizei height = 1024;
    GLenum target = GL_TEXTURE_RECTANGLE_EXT;
    GLenum internalFormat = GL_RGBA;
    GLint maxLevel = 0;

    CGLPBufferObj pBuffer = NULL;
    CGLError error = kCGLNoError;

    error = CGLCreatePBuffer( width, height, target, internalFormat, maxLevel, &pBuffer );

    if( error )
    {
        NSLog(@"CGL Error %@ : %s", @(error), CGLErrorString( error ) );
    }

    return 0;
}

使用 10.12 SDK,我得到了kCGLNoError,但使用 10.13 它提供了kCGLBadDrawable.

除了过渡到使用例如帧缓冲区对象之外,我还能做些什么来让这段代码持续更长时间?

注意:甚至不需要针对不同的 macOS SDK 完全重新编译生成的二进制文件。将 Mach-O 加载命令(更改单个字节)更改VERSION_MIN_MAC_OSX为指向 10.12.0 而不是 10.13.0 也可以解决问题。

标签: macosopenglxcode9

解决方案


推荐阅读