3

Apple MultiGPUIOSurface サンプル (具体的にはファイルhttp://developer.apple.com/library/mac/#samplecode/MultiGPUIOSurface/Listings/ServerOpenGLView_m.html ) を変更して、サーバー側が IOSurface なしでレンダリングされるようにしようとしています。 NSOpenGLView の必要性。

私の修正版はhttp://pastebin.com/z3r715jJ にあります。私のアプローチの違いは、drawRect ではなく、タイマーに基づいて IOSurface にレンダリングしていることです。また、NSOpenGlView のコンテキストも使用していません。

問題は、クライアント アプリケーションで IOSurface のビューが壊れていることです。ただし、NSOpenGLView のコンテキストを作成したものに設定するか、NSOpenGLView のコンテキストを使用すると、機能します。これにより、NSOpenGLView は、私が行う必要のある特別なことを行っていると考えるようになりますが、それが何かはわかりません。

4

1 に答える 1

1

解決策を見つけました(理由はわかりませんが):ピクセルバッファを作成します。

オフスクリーン バッファとドローアブルの必要性についての議論を見つけました ( http://www.mentby.com/Group/mac-opengl/opengl-offscreen-rendering-without-a-window.html )

とにかく、私の修正は次の行を追加することでした:

        NSOpenGLPixelBuffer* pbuf = [[NSOpenGLPixelBuffer alloc] initWithTextureTarget:GL_TEXTURE_RECTANGLE_EXT textureInternalFormat:GL_RGBA textureMaxMipMapLevel:0 pixelsWide:512 pixelsHigh:512];

    [_nsContext setPixelBuffer:pbuf cubeMapFace:0 mipMapLevel:0 currentVirtualScreen:[_nsContext currentVirtualScreen]];
于 2013-04-02T18:40:45.370 に答える