問題タブ [glkit]
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.
objective-c - ネストされたGLKViewおよびGLKViewController
私はOpenGLESを初めて使用し、GLKitを試しています。私の目標は、OpenGLの感触をつかむためだけに非常にシンプルなアプリを開発することです。
Appleのサンプルコード(OpenGL ESゲーム)から始めて、基本的なジェスチャコントロール(パン、ズーム、回転(トラックボールアルゴリズム))を実装しました。
これが完了したので、さまざまな射影行列を試してみたかったので、それを実行するためのユーザーインターフェイスの設計を開始しました。
(出典:canardpc.com)
唯一の問題は、GLKViewControllerのトップビューがGLKViewでない場合は機能しないことです。
GLKViewをサブビューとして持ちながら、GLKViewControllerの優れた機能を保持することは可能ですか?
ありがとうございました。
iphone - Objective Cアプリでの一定のランダムで説明のつかない(とにかく)EXC BAD ACCESS
自動参照カウントとゾンビを有効にしています...
私はコード内のさまざまなポイントへのEXCBADACCESSを取得し続けていますが、ほとんどの場合、ゾンビからの情報はありません。
目的は、画像から読み込まれたテクスチャを含む長方形を画面に描画することです。それは実際に機能します!しかし、多くの場合、それは破損しており(画像とベクトル)、その後、excbadaccess警告が表示されることがよくあります。
私はこの種の構造を持っています...
アプリデリゲートクラス宣言:
次に、ウィンドウがプロパティになり、合成されます。
オプションで起動を終了しました:
AppDelegateはOpenGLデリゲートとして機能し、OpenGLはクラス内の「render」という関数を呼び出します。この関数は[backgroundrender]を呼び出します。
私のGWBackgroundSceneクラス:
初期化:
ベクトルとテクスチャの情報を処理するためのこれらの2つの機能があります
次に、レンダリング関数(OpenGLによってそのデリゲート(アプリデリゲート)を介して呼び出されます)は以下を使用します。
テクスチャ:
/li>self.vertices:
/li>self.textureCordinates
/li>
私がしていることに関する明らかなメモリの問題は何ですか?
どうもありがとう
iphone - GLKViewとUIBUttonの組み合わせ
同じウィンドウでUIButtonのような他のUIObjectと一緒にAppleの新しいGLKViewオブジェクトを使用するサンプルアプリケーションを探しています。私はインターネットからそれを検索していました、そして私が見つけたより似た投稿はそれであり、答えられていません:
私が作成しているアプリケーションでは、同じビューで2つのUIButtonを備えたGLKViewを使用する必要があります。どのボタンを押すかに応じて、GLKViewのパラメーターを変更します。ViewControllerはGLKViewをどのように処理する必要がありますか?GLKViewのみを制御するには、実際のView Controllerとは別にGLKViewControllerを使用する必要がありますか?
ビューコントローラにGLKViewControllerを継承させようとしました。
そして、viewDidLoadFunctionでOpenGLViewという名前のGLKViewを設定します。
ビルドはうまくいきますが、アプリケーションを実行すると、次のようにクラッシュします。
'NSInternalInconsistencyException'、理由:'-[GLKViewController loadView]は「2-view-5」ペン先をロードしましたが、GLKViewを取得しませんでした。
誰かが私を助けることができますか?この例を探していましたが、見つかりません
ジョルディP
ios - CoreMotionの姿勢のrotationMatrixから水平回転を分離して削除します
私は拡張現実アプリのようなものを作っています。このアプリでは、iOSデバイスがどのように動いても重力との整合性を保ちたいOpenGLシーンがあります。iPhoneを横に傾けるとその番号が台無しになるのを発見するまで、CMDeviceMotion.attitude.pitchでうまく設定できたと思いました。そこで、pARk *の例からいくつかのコードを取得し、垂直アクセスの周りの回転を分離しようとしています。私が描いているシーンは、ユーザーがどちらの方向を向いているかを気にせず、フィギュアは常に視聴者から一定の距離を置いて描かれます。垂直軸の回転コンポーネントを理解するとき、それを逆にして回転行列から乗算できるので、ユーザーが見出しを変更したときにOpenGLの数値を静止させておくことができると思います。
これが私のコードです:
次に、OpenGLで通常どおりrotMatrixを使用します。
考え、提案?前もって感謝します。
* pARkサンプルコードは、実空間にいくつかのポイントを設定し、ユーザーの位置とそれらのポイントの相対的な方向を計算して画面上に描画し、その位置を指す地平線に浮かんでいるように見せます。
ios - GLKit での深度テスト
私は OpenGL/GLKit が初めてで、深度テストに問題があります。下の図は、5 つのビームが交差しているポストを示しています。それらはすべて中央 (ポストの内側) で集まりますが、ご覧のように、隠されるはずの梁の部分がまだ見えています。それらは狂ったようにちらつき、ビームが画面上で重なるようにビューを変更すると同じことが起こります。glEnable(GL_CULL_FACE) を使用しないと、各シェイプ内で発生します。つまり、背面ポリゴンの背面が描画され、前面ポリゴンの前面と干渉します。
関連すると思われるコード スニペットを次に示します。頂点と視野角の設定に関する内容は省略しています。うまくいけば、誰かが問題を認識し、そこに特効薬があるでしょう.
私のビューコントローラで
Beam.mで
私はこれに関して非常に新しく、経験が浅いことを完全に認めているので、アプリの構成が不十分である場合は、建設的な批判に対して非常にオープンです.
乾杯、クレイグ
ios - GLKit/OpenGL-ESで法線を自動的に計算します
Appleのサンプルコードに基づいて、OpenGL-ESでかなり基本的な形状を作成しています。彼らはポイントの配列を使用し、最初の配列にインデックスの配列を入れ、3つのインデックスの各セットがポリゴンを作成します。それはすべて素晴らしいです、私は私が望む形を作ることができます。シェイプを正しくシェーディングするには、各ポリゴンの各頂点の法線を計算する必要があると思います。最初は形状が立方体だったのでとても簡単でしたが、今は(少し)より高度な形状を作成して、それらの法線を自動的に作成したいと思っています。ポリゴンの2つのエッジ(ここではすべてのポリゴンは三角形です)のベクトルを取得し、そのポリゴンのすべての頂点に外積を使用すれば、十分に簡単に思えます。その後、以下のようなコードを使用して形状を描画します。
私が理解するのに苦労しているのは、なぜこれを手動で行わなければならないのかということです。表面に垂直なベクトル以外のものが必要な場合もあると思いますが、これがこれまでで最も人気のあるユースケースであると確信しているので、もっと簡単な方法はないでしょうか。明らかな何かを見逃したことがありますか?glCalculateNormals()は素晴らしいでしょう。
//これがGLKVector3[]の回答パスで、法線、頂点(3つはそれぞれポリゴンにグループ化されています)、そして頂点の数で埋めたいと考えています。
iphone - iOS で GLKit を使用して透明度のある 3D 形状をレンダリングする方法
頂点/法線/インデックスのセットで定義された 3D 形状があります。半透明のオブジェクトをレンダリングしたいと考えています。テクスチャのあるオブジェクトとないオブジェクトがあります。
iOSでの開発にはGLKitを使用しています。どうすれば効果が得られるのか教えてください。
iphone - 頂点ポインタの送信またはバッファの生成を行う OpenGL
GLKit を使用して、iPhone 用の OpenGL を開始しました。私のプログラミングのバックグラウンドは、10年以上前にC、C++の経験がほとんどなく、JavaとObjective Cだけです。残っているのは、私がポインターに苦労したことの遠い記憶だけです-そして、私は失敗したと思います.
今では、すべてが私に戻ってくるようです...
私は、Ian Terrel の素晴らしい、素晴らしいチュートリアル シリーズを何度か繰り返しましたが、本当に役に立ちました (ありがとう!!!)。
この質問は、コードの次の部分に関するものです (ほとんどがチュートリアルから直接取得されています)。
これはすべて問題なく動作しますが、Apple のOpenGl Guideで次のことに出くわしました。
……が、効率が悪い。DrawModel が呼び出されるたびに、インデックスと頂点データが OpenGL ES にコピーされ、グラフィックス ハードウェアに転送されます。[...] パフォーマンスに影響を与える可能性があります。[...]アプリケーションは、その頂点データを頂点バッファー オブジェクト (VBO) に格納する必要があります。[...]
それを行うための提案されたコードサンプル(他のソースはほぼ同じことを示しています)は次のようになります。
そして後で次のように描画します:
それについていくつか質問があります。
- 上記のパフォーマンスへの影響はどの程度重要ですか? コードを変更する必要がありますか?
- 上記の最初のコード サンプル (Ian の/私のコード) で実際に行われていることは何ですか?
- 頂点が読み取り専用の場合に vertices[i] を設定できるのはなぜですか?頂点にメモリが割り当てられる場所と方法は?
- 上記のコード (バッファ作成とバインディングのもの) を Ian の/私のアプローチのどこに置くことができますか? また、バインディングと描画の間に (変数がメソッド呼び出しなどであるという意味で) 接続がないのはなぜですか?
ios - OpenGLES2.0をテクスチャにレンダリング
OpenGL ES 2.0を使用してテクスチャにレンダリングしようとしていますが、機能しないようです。
これが私が進める方法です:
しかし、その上に描画して、結果のテクスチャを使用しようとすると、テクスチャは完全に黒く描画されます。
描画コードをとでラップしないrender_tex->begin();
とrender_tex->end();
、すべてが正しく描画され、問題は上記のコードに限定されていると思います。
xcode4.2 - OpenGL ES 2.0プログラムが線のセットではなく線を描画するだけなのはなぜですか?(GLKitまたはOpenGL)
何度もチェックしてきましたが、これまでのところ、openglがどのように描画しているか、何を描画するかを指定する方法を理解していると思いますが、1本以上の線を描画させることはできません。
Xcode 4.2のテンプレートを使用すると、次のコードを取得できます。シェーダーatmを使用しないopengles2.0メソッドを無視しているため、GLKITを使用して正方形のスケルトンを描画しますが、画面にタッチすると、独自の配列が描画されますが、描画されません。
したがって、最初に正方形の形式(テンプレートで使用する変数のタイプを示すためだけに)
これが、「ViewdidLoad」関数で1回呼び出すSetupGLです。
これは更新方法です(つまり、物を回転させるだけです)
Draw In Rectメソッド(私が思うレンダリング)
これはタッチ部分です:
タッチが始まったとき、私はNSMutableDataを作成しているだけです
Touchs Endedで、取得した新しい頂点で描画しようとしています。頂点は、モーションマネージャーからの読み取りをトリガーするタイマーを使用して取得され、ユーザーが画面に触れた場所で計算を実行して、値が画面座標の範囲内になるようにします。
ただし、図面をテストするために、手動で追加したいくつかの値を使用して一時的なNSMUtableData変数を作成しているだけです(追加はひどいものです)。NSMutableDataを使用しているのは、別のチュートリアルで提案されているためです。データを取得するとそこにあるので、データが正しく保存されていると90%確信しています。(http://games.ianterrell.com/how-to-draw-2d-shapes-with-glkit/)
この最後の部分は私を夢中にさせる部分です!!! 自動更新でバッファが描画されるように、自分の配列でバッファを変更する必要があると思います。
どんな提案でも本当にありがたいです。
ありがとう
ああ、もし誰かが直交行列を設定する方法を知っているなら、私は本当に2Dコンポーネントatmにしか興味がないので、その遠近法行列に置き換えることはできません。
編集:
さて、GLfloatsのランダムな配列を送信しようとしましたが、形状が変わりますが、NSMutableDataの配列を使用しないのはなぜですか?チュートリアルとまったく同じ手順を実行していると思いました。