問題タブ [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.
cocoa - NSOpenGLView上のNSTextField
openGLコンテンツをレンダリングするNSOpenGLViewでウィンドウを作成しました。
ビューにいくつかのボタンとテキストフィールドを追加したい:Interface Builder(またはコード)を使用してNSTextFieldsとNSButtonsを追加できますが、表示されません。
NSOpenGLViewはサブビューを持つことができないと文書化されているため、NSViewから直接派生し、NSOpenGLContextを作成して使用するコードを実装することにより、独自のCustomGLViewを作成しました。しかし、サブビューはまだ表示されていません:-OpenGLコンテキストがサブビューをペイントします。
Windowsでは、この問題は存在しません。-OpenGLをホストするために使用されるWindowsには、ピアまたはサブ子(ビュー)がOpenGLサーフェスによって隠されないように、WS_CLIPCHILDREN
およびスタイルを設定する必要があります。WS_CHIPSIBLINGS
OpenGLを使用して描画しているNSView上にサブビューを表示するにはどうすればよいですか?
cocoa - OpenGL ピクセル形式属性 (NSOpenGLPixelFormatAttibutes) の説明?
私は OpenGL の初心者ではありませんが、専門家でもありません。多くのチュートリアルでは、3D、2D、投影、直交などの描画方法を教えていますが、ビューを設定するのはどうですか? (ココア、Mac の NSOpenGLView)。
たとえば、私はこれを持っています:
特にそれらを組み合わせるとき、私はそれらの使用法をよく理解していません。
例えば:
ビューを全画面表示できるようにしたい場合は、 NSOpenGLPFAFullScreen のみを記述する必要がありますか? または両方?(可能なということは、常に全画面表示であるとは限らないことを意味します)
ダブルバッファに関して、これは正確には何ですか? (以下:Appleの定義)
存在する場合、この属性は、ダブルバッファリングされたピクセル形式のみが考慮されることを示します。それ以外の場合は、単一バッファーのピクセル形式のみが考慮されます
色について: NSOpenGLPFAColorSize が 24 で NSOpenGLPFAColorSize が 8 の場合、アルファ コンポーネントと RGB コンポーネントの処理が異なることを意味しますか? 前者を 32 に設定し、後者を 0 に設定するとどうなりますか?
などなど、一般的に、ビューを最初から設定する方法を学ぶにはどうすればよいですか?
前もって感謝します。
イグナシオ。
cocoa - ImageKitとCGImageDestinationを使用してNSOpenGLViewピクセルデータを一部の画像ファイル形式にエクスポートする際の問題
概要:NSOpenGLViewから一部のファイル形式にピクセルデータをエクスポートすると、誤った色になります
私はいくつかの実験データを視覚化するためのアプリケーションを開発しています。その機能の1つは、NSOpenGLView
サブクラスでデータをレンダリングし、結果の画像をファイルにエクスポートしたり、クリップボードにコピーしたりできるようにすることです。
NSImage
ビューは、次のように生成されたとしてデータをエクスポートします。
コピーでは、次のようにこの画像を非常に簡単に使用します。
ファイルの書き込みには、ImageKitIKSaveOptions
アクセサリパネルを使用して出力ファイルの種類と関連するオプションを設定し、次のコードを使用して書き込みを行います。
(ここでは少し余分なコードをトリミングしましたが、私が見る限り、結果に影響を与えるものは何もありません。これはパネルnewUTType
からのものです。)IKSaveOptions
これは、ファイルがGIF、JPEG、PNG、PSD、またはTIFFとしてエクスポートされる場合は正常に機能しますが、PDF、BMP、TGA、ICNS、およびJPEG-2000にエクスポートすると、画像の一部に赤色のアーティファクトが生成されます。以下に画像の例を示します。最初の画像はJPGとしてエクスポートされ、2番目の画像はPDFとしてエクスポートされます。
(出典:walkytalky.net)
(出典:walkytalky.net)
クリップボードへのコピーでは、の現在の実装ではこの赤いストライプは表示されませんが、image
。ではなくusingを生成した元の実装では表示されました。したがって、OpenGLから取得したピクセルの色表現に問題があり、その後の変換が適切に行われないと推測していますが、どうすればよいか迷っています。imageRep
NSCalibratedRGBColorSpace
NSDeviceRGBColorSpace
それで、誰かが私に(i)これを引き起こしているもの、そして(ii)どうすればそれをなくすことができるか教えてもらえますか?私はすべてのフォーマットについてはあまり気にしませんが、少なくともPDFが機能することを本当に望んでいます。
cocoa - NSOpenGLView に有効なコンテキストがあるかどうかの判断 (Cocoa OSX)
NSOpenGLView に有効なコンテキストがあることを確認しようとしていますが、openGLContext への呼び出しはこれを理解するのに役立たないようです。openGLContext は常に NsOpenGlContext を返すようです (ビューにコンテキストがある場合は現在のコンテキストを返し、ない場合はコンテキストを作成して返します)。代わりに使用できる別の方法はありますか?
objective-c - サイズ変更時にNSWindowタイトルバーが白に変わる
NSOpenGLViewを含むNSWindowのサイズをプログラムで変更しています。ウィンドウのサイズが変更され、NSOpenGLViewはサイズ変更を正常に処理しますが、NSWindowのタイトルバーは完全に白になります。ただし、ボタン(最小化、...)はクリックでき、表示もできません。
サイズ変更は、Windowsコントローラーで次のコードを使用して行われます。メソッドはメインスレッドで呼び出されます。
タイトルバーが白くなり、再び描画されない理由は何でしょうか。回避策としてそれ自体を描画するようにタイトルバーに指示できますか?
ありがとうございました
cocoa - OpenGL/Cocoa でテクスチャを共有する際の問題
私は少し openGL 初心者で、2 つの openGL ビュー間でテクスチャ共有を機能させようとしています。2 つの NSOpenGL ビュー クラスを作成し、インターフェイス ビルダーで、各 openGL ビューを 1 つ持つウィンドウを作成しました。最初のビューの prepareOpenGl には、テクスチャを設定してグローバル変数に割り当てるコードが含まれています。 2 番目のビューでは、グローバル テクスチャで glBindTexture を呼び出します。アプリケーションを実行すると、最初のビューにテクスチャしか表示されず、2 番目のビューにはテクスチャのないオブジェクトが表示されます。テクスチャの共有が機能していないようです。私の一般的な戦略に欠陥があるのか 、それとも細部が少し欠けているだけなのか疑問に思っています.
「2 番目のビュー」とは、元のビューのテクスチャを使用しようとしているビューを意味します。
objective-c - 異常な NSOpenGLView セットアップの問題
NSOpenGLView
サブクラスを異常な方法で設定しようとしていますが、いくつかの問題が発生しています。基本的に、私は博士課程の生物工学シミュレーションを実行するプログラムを書いており、MacOSX と Unix の両方でコンパイルできる必要があります (私のマシンは Mac ですが、sim は最終的により強力な Unix マシンで実行されます)。コードは今後 1 年半にわたってどんどん長くなっていくので、プログラムの 2 つの完全に異なるバージョンを追跡する必要はありません。そのため、ObjectiveC-2.0 を回避し、インターフェイスをオプションのままにすることで、Unix で ObjectiveC コードをコンパイルできるようにしたいと考えています (ほとんどの場合、長いシミュレーションの前にセットアップを実行し、開発中に短いシミュレーションを監視します)。
現在のバージョンは、インターフェイスがなくても問題なく動作します。シミュレーションは正しく実行され、プログラムは OpenGL フレームをレンダリングし、問題なく画像やビデオ ファイルにエクスポートできます。その上にインターフェイス(現在はNSOpenGLViewサブクラスと「開始」ボタンを備えた単純なウィンドウ)を追加しているので(それなしでmain()の代替バージョンでコードを実行できるように)私は描画コードは drawRect 関数になく、サブクラス化されたビューのどこにもないため、奇妙な方法で OpenGL を「配線」する必要がありますが、代わりに「基本」プログラムにあります。
私がこれまでに行ったことは次のとおりです。
メイン プログラム (「Lattice」と呼ばれるオブジェクトを使用) は、すべてのシミュレーションとレンダリングを実行し、画像とビデオをファイルに正しく出力します。これには
NSOpenGLContext
と の呼び出しも含まれます[renderContext flushBuffer];
PottsView と呼ばれる NSOpenGLView のサブクラスには、次のようにビューと共に初期化されるラティスのインスタンスが含まれています。
/li>
drawRect()
空です。
- PottsController は、開始ボタンをビューに接続する InterfaceBuilder でインスタンス化されたオブジェクトです。開始ボタンは、ラティスにいくつかのステップを実行するように指示するだけです。
ここで、[開始] を押すと、シミュレーションが正しく実行されます (つまり、ファイルとターミナルに出力されます) が、PottsView は正しく機能しません。白いままですが、レンダリングされたフレームのセクションに変更された場合、cmd+tab パーツを使用すると表示されます。Expose (F3) を押しても同じです。
フラッシングなどのいくつかの組み合わせを試しましsetNeedsDisplay
たが、率直に言って、私は迷っています。私はこの 4 月より前にプログラミングを行ったことがなく、これは (私が知る限り) NSOpenGLView を使用する完全に逆の方法であるため、アイデアがありません。現在のセットアップを機能させる方法、またはプログラムを完全に再配線する方法を誰かが提案してくれることを願っています (インターフェースはオプションのままです)。
objective-c - NSOpenGLView が動作しません。私はすべてを試しました
で何かを表示したいのですNSOpenGLView
が、そのドキュメントには合計で 0 バイトのドキュメントがあり、サンプル コードはドキュメントと同じくらい大きくて複雑であるため、うまくいきません。これはこれまでの私のコードで、ANOpenGLView
次のようNSOpenGLView
にサブクラス化された NIB に含まれていANOpenGLView
ます。
三角形を表示するにはどうすればよいですか? 私が得る唯一のものは、空白の白い画面です。
PS 2Dで描きたいです。
編集私は自分のコードを更新しました。これが私が今持っているものです:
cocoa - NSOpenGLView サブクラスのキーボード イベントで不快なバンプ サウンド
キーボード イベントを処理するために NSOpenGLView をオーバーライドしました。イベント検出は正常に機能していますが、キーを押すたびに耳障りなバンプ音が聞こえます。どうすれば自分のビューにリラックスするように伝えることができますか?
これが私の keyUp: メソッドの外観です。
cocoa - NSOpenGLView の作成中にエラーが発生しました
Cocoa API を使用して OpenGL アプリケーションを作成しようとしていますが、今では 1 つのことを除いてすべて正常に動作します。メイン ウィンドウのサイズを変更すると、GL コンテキストが正しく更新されないように見えます。
ウィンドウのセットアップとコンテキストのレンダリングに使用されるコードは次のとおりです。
メインウィンドウ:
m_window = [[NSWindow alloc] initWithContentRect:window_rect
styleMask:( NSClosableWindowMask |
NSMiniaturizableWindowMask |
NSTitledWindowMask | NSResizableWindowMask )
backing:NSBackingStoreBuffered defer:YES];
OpenGL ビュー:
NSOpenGLPixelFormatAttribute attrs[] = {NSOpenGLPFADoubleBuffer, NSOpenGLPFAWindow, NULL};
これは機能するはずですが、ウィンドウのサイズが変更され、OpenGL ビューとビューポートを更新した後、バック バッファーの内容が正しくスケーリングされていないように見えます。それの何がいけないの?
返信ありがとうございます。