1

CoreAnimationDrawingModel を使用して Safari NPAPI プラグインを作成しています。これにより、高性能の CAOpenGLLayer を作成してブラウザに返すことができます (これを使用しています: https://wiki.mozilla.org/NPAPI:CoreAnimationDrawingModel )。

残念ながら、プラグインが Retina ディスプレイでホストされているかどうかを判断する方法が見つからないため、このセットアップで Retina ディスプレイをサポートするのに問題があります。この情報がないと、CALayer の contentScale プロパティを適切に設定できません。

ネイティブ アプリケーションでは、NSView で CALayer をホストし、viewDidChangeBackingProperties を監視して、必要な解像度情報を取得します。NPAPI ワールドでレイヤ ホストを取得する方法があるかどうかわかりません。たとえそれが可能だったとしても、解決のためにそれをポーリングしなければならないのは面倒です。理想的には、ある種の通知リスナーを登録したいと思います。

私は FireBreath ( http://www.firebreath.org/ ) を使用してプラグインを作成しており、IRC で開発者 (Richard Bateman) と話しましたが、彼らはここで質問することを提案しました (Stuart Morgan は質問するのに適した人物として言及されていました)。 .

4

1 に答える 1

1

There's a spec for passing this information to NPAPI plugins. I'm not completely sure of the implementation status; Chrome doesn't implement it, casual inspection of Firefox source suggests it does, and since it was authored by an Apple engineer it's likely that Safari does.

于 2013-08-29T21:12:45.110 に答える