7

WebGLを使用して頂点シェーダーのテクスチャから読み取ることは可能ですか?

私はWebGLページを作成し(試してみるためだけに)、Chrome7を使用してテストしました。Chrome 8にアップグレードするとすぐに、動作しなくなりました。webglが有効になっていることを再確認しました。エラーは次のとおりです。

'texture2D':一致するオーバーロードされた関数が見つかりません

texture2Dの呼び出しを定数に置き換えると、機能します。同じテクスチャを使用するフラグメントシェーダーでのテクスチャアクセスも機能します。

誰かアイデアはありますか?Chromeをアップグレードすると壊れてしまったという事実に特に驚かされます。

更新: Firefox4ベータ版で動作します。Chromeのバグを報告しました-問題65340

アップデート2: FirefoxとChromeで動作するようになりました

4

2 に答える 2

6

Chrome の「バグ」ではありません。

頂点テクスチャ アクセスは、WebGL 仕様の基礎である Open GL ES 2 の必須機能ではありません。基盤となる GL ドライバーが頂点テクスチャ アクセスをサポートしているにもかかわらず、現在、Angle を使用して Chrome に切り替えており、Angle がその頂点テクスチャ アクセスが利用可能であると報告していないことが原因であると思われます。

Thatcher Ulrich を使用して、FF と Chrome のバージョンを比較できます。

http://webgl-bench.appspot.com/

これには MAX_VERTEX_TEXTURE_IMAGE_UNITS パラメータがあります (末尾近く) Chrome/Angle は常に 0.t を報告します

確認すべきもう 1 つのことは、正しい texture2D 構文を使用していることです。仕様が変更され、FF がまだ古い構文をサポートしている可能性があります。

于 2010-12-05T15:01:20.887 に答える
2

コメントしたいのですが、評判がありません。

alanatmech が言ったように、すべての GL 呼び出しを DirectX に転送する Angle に関連している可能性があります。したがって、これは機能の削除ではなく、OpenGL ドライバーを使用せずに Windows マシンで WebGL をサポートできるという利点があります。

「--use-gl=desktop」を指定して Chrome を実行すると、Angle の代わりに OpenGL レンダリング バックエンドが使用されます。あなたのサイトはChrome 8.0.552.215ベータ版でも機能していませんが、あなたが言及したエラーは発生しません。これは、フラグなしのChrome 9.0.597.10カナリアビルドとMinefieldで発生します。

于 2010-12-07T00:39:04.873 に答える