問題タブ [nsopenglview]
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.
uitableview - openGLView での Cocos2D の z-index の問題
スコアと名前を表示する UITableView があります。画面上を移動するアニメーション オブジェクトもあります。ただし、テーブルビューの下に移動し、z-index 値に関係なく表示されません。アニメーション オブジェクトを UITableView の上に移動するにはどうすればよいですか? ありがとう..
cocoa - NSWindow に View と NSOpenGLView の数を追加する
ウィンドウ内のカスタマイズされた NSOpenGLView の数とともに NSView の数を追加する必要があり、ビューの配列をシャッフルしたいと考えています。最初にベース ビュー setWantsLayer:YES を設定すると、setWantsLayer:NO を設定すると OpenGLView を描画できません。OpenGLView は描画できますが、NSView は OpenGLView を超えています。お気に入り、
MyOpenGLView.m 内
次に、ウィンドウにもう1つビューを追加しようとします
今、私のカスタム ビューは myOpenGLView を超えています。これを修正するにはどうすればよいですか?
編集:
問題のスクリーンショット
objective-c - Objective-C で設計されたオブジェクトのインスタンスを作成するにはどうすればよいですか?
複数のウィンドウを必要とするアプリケーションを作成しています。Interface Builder でウィンドウをどのように表示するかを設計しました。アプリケーションを起動すると、すべてが正常に表示されます。私はこれまで利用してきた C++ コードの大規模なライブラリを持っており、それをうまく統合することができました。ただし、(クロスプラットフォーム システムで) ウィンドウを作成するために使用する関数がありますが、Interface Builder で設計したウィンドウの新しい/2 番目のインスタンスを作成するにはどうすればよいですか?
たとえば、OpenGL ビューを含む NSView を含む NSWindow があります。起動時に、ウィンドウ (およびその内容) が作成され、素晴らしく表示されます。
このウィンドウが実行されているある時点で、ユーザー入力に応答して、NSView と OpenGL ビューを含む 2 番目のウィンドウを表示する必要があります (IB で設計したとおりです)。この 2 番目のインスタンスを作成するにはどうすればよいですか?
私は Mac プログラミングの初心者であり、これが実際にどのように機能するかについていくつかの概念を誤解している可能性があることに感謝します - 修正は大歓迎です!
macos - OpenGL と Cocoa が機能しない
NSOpenGL
マウンテン ライオンを使用して OpenGL で赤い背景を持つ非常に単純な青い正方形を描画しようとしています。コードはシンプルで動作するはずです。コンテキストの設定に問題があると思います。
これが私のGLViewインターフェースです:
実装:
私の非常に単純なフラグメントシェーダー:
単純な頂点シェーダー:
コンパイルエラーは発生せず、赤い画面だけで青い四角は表示されません。誰かが何が悪いのかを理解するのを手伝ってくれませんか。ただし、Gl.h と gl3.h の両方が含まれているという警告が表示されます。OpenGL 2 を使用したい
macos - NSOpenGLView がクリアされない
Cocoa ウィンドウと NSOpenGLView を使用して OpenGL 3.2 を試しています。ただし、NSOpenGLView で赤色を描画することはできません。白いウィンドウが表示されます。これが私のコードです(NSOpenGLViewのサブクラス内):
コードは単にビューを赤くクリアする必要があります。エラーや警告はありません。白いウィンドウだけです。
objective-c - 生のビットマップ データを使用した効率的な Cocoa アニメーション
RGBA malloc されたデータの生のビットマップ イメージがあります。行は明らかに 4 バイトの倍数です。このデータは実際には AVI (24 ビット BGR 形式) に由来しますが、32 ビット ARGB に変換します。フレームあたり約 8 MB の 32 ビット データ (1920x1080) があります。
フレームごとに:
NSData
を介してそのフレームのデータをオブジェクトに変換しますNSData:initWithBytes:length
。CIImage
次に、 を介してそれをオブジェクトに変換しますCIImage:imageWithBitmapData:bytesPerRow:size:format:colorSpace
。- そこから
CIImage
、 を使用して最終的なNSOpenGLView
コンテキストに描画しますNSOpenGLView:drawImage:inRect:fromRect
。ターゲット イメージの「モザイク」の性質により、さまざまなソース/宛先 Rects を使用して、これに対して約 15 ~ 20 回の呼び出しが行われます。
NSTimer
を呼び出す30hz を使用する[self setNeedsDisplay:YES]
とNSOpenGLView
、2012 MacMini/2.6ghz/i7 で約 20 ~ 25 fps を達成できます。30hz では安定していません。NSTimer
これは、 の代わりに を使用すると予想されCVDisplayLink
ます。
しかし...NSTimer
今のところ問題を無視して、このフレームごとのレンダリングをもう少し効率的にするための提案/指針はありますか?
ありがとう!
注意:CIImage
ある時点でトランジション効果にアクセスしたいので、オブジェクトに固執したいと思います。
cocoa - 私の CVDisplayLinkOutputCallback メソッドを使用して OpenGL シーンを更新およびレンダリングする必要がありますか?
アプリケーションでシーンをレンダリングする方法としてNSOpenGLView
usingを設定することができました。CVDisplayLinkSetOutputCallback
すべてが正しく機能しているように見え、コールバック メソッドはかなり適切な速度で起動しています。
これまでのところ、かなり前 (2009 年) のこのフォーラム スレッド (具体的には、この投稿)で見つかったコードに基づいて実装を行ってきました。
スレッドをさらに掘り下げると、物理シミュレーションなどを統合するためNSTimer
の方法を呼び出す固定ステップ間隔の設定についての言及があります。update:(NSTimeInterval)duration
ただし、フレーム間のデルタ時間も表示リンクのコールバック メソッドで計算されているようで、かなり混乱しています。
シーンを更新するための一定のステップ時間間隔をこれまで考えたことがありませんでした。正直なところ、それは私にはあまり適切ではないように思えますが、OpenGL とゲーム開発のより細かいニュアンスをまだ学んでいます。
update メソッドと render メソッドをディスプレイ リンク コールバックで結び付けるのは良い方法ですか、それとも別の場所に置く方が適しているでしょうか?
私はGLKit
iOS で使用しましたが、適切なデリゲート メソッドに準拠し、それに応じて update メソッドと render メソッドが呼び出されるという点で、すべてを起動して動作させるのは非常に簡単でした。
これまでのところ、私のコードは次のようになっています: (フォーラムスレッドで見つかったコードに基づく)
これは実行可能なアプローチですか?NSTimer
代わりにを使用する必要がありますか?または、おそらくより適切な代替方法はありますか?
私はあまり詳しくないCVDisplayLink
ので、シーンを更新してレンダリングするメソッドを実装するのにこれが最適な場所かどうかはわかりません。CVDisplayLink
このように使用する必要があります。つまり、シーンのレンダリングと更新をすべて 1 つにしますか?
さらに詳しい情報をいただければ幸いです。
opengl - QTMovie のテクスチャを OpenGL で 2 回描画する
現在、OpenGL を使用して QTMovie のフレームを NSOpenGLView に表示しています。そのために、次のコードでテクスチャ コンテキストを作成しています。
次に、ビジュアル コンテキストをムービーに割り当てて、フレームをそのコンテキストに描画します。私はこのビットで実際のフレームを取得しています:
は_currentFrameTex
CVOpenGLTextureRef です。
1 つのビューではすべて正常に動作しますが、同じフレームを 2 番目のビューに描画したいのですが、その方法が想像できません。
それを行う最も簡単な方法は何ですか?もちろん、1 秒あたり 60 回 (少なくとも) 呼び出されるため、パフォーマンスも優れている必要があります。