問題タブ [metal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
977 参照

opencv - cv::Mat を MTLTexture に変換する

私の現在のプロジェクトの中間ステップでは、opencv の cv::Mat を Metal のテクスチャ コンテナである MTLTexture に変換する必要があります。フロートをテクスチャのフロートとしてマットに格納する必要があります。私のプロジェクトは、精度の損失をまったく許容できません。

これは、そのような変換の私の試みです。

しかし、それは機能していないようです。Mat から毎回ゼロを読み取り、EXC_BAD_ACCESS をスローします。精度を維持するには、MTLPixelFormatRGBA16Float の MTLTexture が必要です。

この問題を検討していただきありがとうございます。

0 投票する
1 に答える
3095 参照

ios - テクスチャの配列を Metal に送信する最良の方法

私は以下のシェーダーを持っています (長さと明確さのために一部を削除しています)。これを行うためのより良い方法を見つけたいと思います。サイズが可変のテクスチャの配列をメタル シェーダに送信したいと考えています。頂点の位置を計算してから、使用するテクスチャを見つけます。

現在、私は物事をハードコーディングし、いくつかの if ステートメントを使用していますが、これは醜いです (そして、高速ではないと思います)。計算してからテクスチャ添え字としてi使用する方法はありますか (のように)?itex[i].sample

0 投票する
1 に答える
520 参照

objective-c - Objc Cocoa MRC - リリースおよび自動リリースされたオブジェクトアプリケーションを表示するには、彼に連絡する必要があります

Metal API (Objective C) と MRC (Manual Reference Counting) を使用して C++ アプリケーションを作成しています。私は ObjC の経験が非常に限られています。ほとんどの Metal API オブジェクトはプロトコルとして定義され、C 関数または他のオブジェクトのメソッド (例: MTLDevice newBufferWithLength) から返されるオブジェクトとして作成されます。この方法で作成されたオブジェクトを解放する方法を知るには、自動解放が設定されているかどうかを知る必要があります (たとえば、保持カウント 1 で自動解放されたオブジェクトを解放することはできません)。問題は、Metal API ドキュメントにこの質問に答える記述が見つからないことです。いわゆる軽量オブジェクトはすべて自動解放されて作成されていることをユーザーガイドで読んだだけです。自動解放されたオブジェクトの例が 3 つありますが、残りのオブジェクトが自動解放されていないと仮定できるかどうかはわかりません。

ご協力ありがとうございました。

0 投票する
4 に答える
4904 参照

ios - 実行時に金属サポートを識別する iOS コード?

通常、以下のコードを使用して、デバイスの iOS バージョンを識別します。

同様の方法で、デバイスの Metal サポートを見つけようとしています。Metal は、A7 (またはそれ以上) の GPU と iOS 8.0 を搭載した Apple デバイスでサポートされています。

これは、私のコードが機能することを期待する方法です:

ブール変数の値を取得するにはどうすればよいですMetalSupportedか?

0 投票する
1 に答える
561 参照

metal - MTLBuffer への格納の効率

イメージ フロート データをシェーダー内のフォーマットされていないメモリ ロケーションに保存したいのですが、MTLBuffer が答えのようです。まず、これは可能ですか?MTLBuffer の Apple ドキュメント内で、バッファを指すポインタにアクセスできることを見ました。シェーダー内からそのポインターを使用して、割り当てられたメモリをいっぱいにすることはできますか? 第二に、この操作がどれほど高速になるかを知りたいと思います。テクスチャを操作するのと同じように高速で効率的ですか?

MTLBuffer のアクセス速度が MTLTexture での操作に匹敵することが確認された場合、多くのコードを再設計する必要があるため、これを尋ねます。

0 投票する
2 に答える
992 参照

ios - Metal API または Accelerate Framework を使用してトリミングされたビットマップを描画する方法は?

ビデオ フレームをクロップするカスタム ビデオ コンポジターを実装しています。現在、これを行うために Core Graphics を使用しています。

Metal API を使用してこれを行うにはどうすればよいですか? それははるかに速いはずですよね?Accelerate Framework (具体的には vImage) の使用についてはどうですか? それはもっと簡単でしょうか?

0 投票する
2 に答える
4477 参照

ios - 金属 MTLTexture は、アルファ値が 1 または 0 でない場合、半透明の領域を黒に置き換えます。

Apple の texture importer または私自身のテクスチャ インポーターを使用している場合、レンダリング時にソフトウェア (透明な背景を使用) または Photoshop (PNG として保存) で描画された白いソフト エッジの円は、Metal に取り込まれると半透明の色が黒に置き換えられます。 .

以下は、Xcode の Metal デバッガーからのスクリーン グラブです。シェーダーに送信される前のテクスチャを見ることができます。

画像はここにあります (私は埋め込むのに十分なランクではありません)

Xcode、ファインダー、および UIImageView に配置された場合、ソース テクスチャにリングがありません。しかし、UIImage -> CGContex -> MTLTexture プロセス (具体的には MTLTexture 部分を考えています) のどこかで、透明なセクションが暗くなります。

過去数日間、できる限りのことを変えようと頭を壁にぶつけてきましたが、それがわかりません。

わかりやすくするために (ha)、これが私の個人的なインポート コードです。

しかし、私はそれが問題だとは思いません (これは Apple の Swift のコピーであり、私は代わりに彼らのものを使用しましたが、違いはありません)。

どんなリードでも非常に役に立ちます。

0 投票する
1 に答える
165 参照

ios - Metal で画面上の位置にあるオブジェクトを取得する

私は Metal を使用しており、ユーザーが画面上の特定のオブジェクトをタップできるようにしたいと考えています。タップジェスチャ認識エンジンを使用しているため、CGPoint がありますが、その時点でオブジェクトを見つける方法がわかりません。金属の画面上の座標を取得する方法、または CGPoint を金属座標空間に変換する方法はありますか?