我想为屏幕外渲染创建一个NSOpenGLPixelBuffer。现在,我甚至无法初始化它。这是代码:
$datastr = 'proc_name=customer_upd¶ms={
"proc_info":
{
"proc_division":"U"
},
"data":[{
"table_name":"Customer",
"rows":[ {
"itemId" : "12231551",
"lastName" : "ads",
"firstName" : "fds"
} ]
}]
}'
我试图摆弄像素格式和宽度,高度,但似乎没有任何效果。我一再为pixBuf得到零。我在MacOS 10.13上使用Xcode 9。它说NSOpenGLPixelBuffer已被弃用,但它应该仍然有用,对吗?
答案 0 :(得分:5)
NSOpenGLPixelBuffer
已deprecated since OS X Lion,其本身为dates back to 2011。难怪你得到nil
。
Here,Apple提出了一种绘制纹理的新方法:
最后请注意,应该将NSOpenGLPixelBuffer类的全部内容视为已弃用。将IOSurface与GL framebuffer objects结合使用作为替代。
请参阅this example以了解其必要性。
答案 1 :(得分:2)
可能需要帮助以下代码。您将GL_TEXTURE_2D替换为此GL_TEXTURE_RECTANGLE_EXT。
// Create an OpenGL pixel buffer
pixBuf = [[NSOpenGLPixelBuffer alloc] initWithTextureTarget:GL_TEXTURE_RECTANGLE_EXT textureInternalFormat:GL_RGBA textureMaxMipMapLevel:0 pixelsWide:32 pixelsHigh:32];
NULL_ERROR_EXIT(pixBuf, "Unable to create NSOpenGLPixelBuffer");