macos - 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 也可以解决问题。