创建像素缓冲区Objective-C

时间:2017-11-05 05:53:23

标签: objective-c xcode macos opengl

我想为屏幕外渲染创建一个NSOpenGLPixelBuffer。现在,我甚至无法初始化它。这是代码:

$datastr = 'proc_name=customer_upd&params={ 
"proc_info":
{ 
    "proc_division":"U"
}, 
"data":[{ 
    "table_name":"Customer", 
    "rows":[ {
                    "itemId" : "12231551",
                    "lastName" : "ads",
                    "firstName" : "fds"
   } ] 
}] 
}'

我试图摆弄像素格式和宽度,高度,但似乎没有任何效果。我一再为pixBuf得到零。我在MacOS 10.13上使用Xcode 9。它说NSOpenGLPixelBuffer已被弃用,但它应该仍然有用,对吗?

2 个答案:

答案 0 :(得分:5)

NSOpenGLPixelBufferdeprecated since OS X Lion,其本身为dates back to 2011。难怪你得到nil

Here,Apple提出了一种绘制纹理的新方法:

  

最后请注意,应该将NSOpenGLPixelBuffer类的全部内容视为已弃用。将IOSurfaceGL 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");