5月 19, 2011 by 鈴木 佑 | Comments
この記事は Qt Blog の "QML ShaderEffectItem on QGraphicsView” を翻訳したものです。
執筆: Kim Gronholm 2011年5月3日
ShaderEffectItem をご存じない方は「万能な QML Scene Graph」をご覧ください。
QML Scene Graph 上で動作する QML 2 では GL/GLES シェーダコードと QML を組み合わせるための素晴らしい API を提供します。この API は2つの新しい QML 要素 ShaderEffectItem と ShaderEffectSource になります。この API では、QML 1 の標準要素を使用する限りは実現できなかったエフェクトとアニメーションを簡単に作成することができます。これによりエフェクトの重い処理を GPU で行うことができるようになるため、パフォーマンスも向上し、ハードウェアアクセラレーション無しでは十分なパフォーマンスで動作しなかったようなことも実現できます。
ShaderEffectItem の実装は基本的には QML Scene Graph に依存していないため、我々は QGraphicsView ベースの Qt Quick 1.x 向けに、同じような API を提供する QML の拡張プラグインを実装しました。以下の動画では Qt Quick 1.0 のアプリケーションが N8 上で動作しており、このシェーダプラグインを使用したいくつかのエフェクトを紹介しています。また、同じアプリケーションが Symbian^3、Maemo 5、Mac OS X、Windows 7、Ubuntu の5つの異なるプラットフォームで動作しています。
このプラグインとデモアプリケーションのソースコードは https://qt.gitorious.org/qt-labs/qml1-shadersplugin から入手可能です。ShaderEffectItem と ShaderEffectSource 要素の API の詳細な情報は doc ディレクトリ以下のドキュメントにあります。このプラグインと QML 2 の違いは README ファイルを参照してください。
シェーダプラグインの使用方法はシンプルです。
このプラグインは完全に機能し、既に利用されていますが、まだ「開発中」のため API が変更になる可能性があります。QML 2 の API に追従し、プラグインをできる限り前方互換にするのがゴールになります。
この機能は OpenGL もしくは OpenGL ES 2.0 を必要とし、QtOpenGL モジュールに依存します。このため、Qt 4.7.x 以上が動作し、QtOpenGL をサポートする Windows、Linux、Mac、Symbian^3(4.7.4 までは実験段階)、Maemo 5 などのプラットフォームで Qt が 4.7.x にアップデートされている場合にのみ動作します。Maemo 5 では PR1.3 ファームウェアであれば大丈夫です。
現在の Qt の OpenGL ES 2.0 バックエンドの Symbian でのリソース管理は不完全な状態ですが、Qt 4.7.4 で改善しようと思っています。それまでは Symbian のアプリケーション開発のためにこの機能を使用することは推奨しません。しかし、試用していただいて、フィードバックをいただければと思います ;)
この機能を試していただき、これに対する意見やフィードバックをいただければと思います。
Download the latest release here: www.qt.io/download.
Qt 6.10 is now available, with new features and improvements for application developers and device creators.
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
2 1, 2026
本記事はゲスト執筆者 Kevin Ottens による「Qt Widgets to Qt Quick, An Application Journey..
1 19, 2026
このブログは「Qt Quick for Android - Qt 6.9 and 6.10」の抄訳です。 最近、Qt Quick for..