2009-10-22 4 views
5

こんにちは私はiPhone用のOpenGLESでプログラミングしていますが、現在は奇妙なフレームバッファオブジェクトエラーが発生しています。しかし、私の実験で問題がヒットしている、 http://web.me.com/smaurice/AppleCoder/Welcome.htmlフレームバッファオブジェクトの問題

をしかし、私は他のチュートリアルを続ける前に、私自身のいくつかの実験を行うために移動:

最初に私はサイモン・モーリスからいくつかのチュートリアルを以下ました。私がやろうとしていたのは、EAGLViewをViewControllerのビューにすることでした。このコードは、元々チュートリアルのベースコードだったときにはうまくいきました。

EAGLViewはUIViewのサブクラスなので、これを行うのはあまり難しくないので、実験を続けるときれいなスレートでしたいと思っていました。 WindowsベースのアプリケーションプロジェクトでXcodeで新しいプロジェクトを作成し、以前のプロジェクトと同じタスクを実行するために新しいEAGLViewとViewControllerを作成しました。

ただし、コンパイルして実行すると、ビューが白く表示され、createFramebufferプロセス中にコンソールから「完全なフレームバッファオブジェクト%xを作成できませんでした」というエラーが出力されます。 (エラーコンソール出力: "GLController [2071:207]が完全なフレームバッファオブジェクト0を作成できませんでした)。

最初のコードだと思ったので、前のプロジェクトの作業コードを新しいプロジェクトにリッピングしても、同じエラーが表示されます。同時に私は新しいプロジェクトのコードを古いプロジェクトに移し、成功した出力でコンパイルしました。

新しいプロジェクトで同じコードが正しく機能しないのはなぜですか?私は、古いプロジェクトでは新しいコードが正しく動作する理由に混乱しています。誰かが私が逃していることを知っていれば、それは大いに感謝されるでしょう。

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

(またAppleのサンプルコードから数EAGLViewsでテストされ、同じエラーが新しいプロジェクトで発生しますが、添付のViewControllerを持つ古いプロジェクトでは発生しません。)

+0

あなたが行ったのと同じ手順を経なければ、私たちはこれに答えることは難しいです。 glCheckFramebufferStatusOESを呼び出したときに返された結果コードを教えてください。 – prideout

+0

エラーコンソールの出力は0です。 手順: 1. Xcode(この場合はWindowsベースのアプリケーション)から新しいプロジェクトを作成します。 2.ウィンドウのサブビューにリンクされた新しいUIViewControllerを作成します。 3.制御テストのために、チュートリアルの1つまたは簡単なサンプルコードからEAGLViewを取得します。 4. UIViewControllerのビューをEAGLViewとして設定します。 5.(必要なフレームワークを追加します。)ビルドして実行します。 問題はUIViewControllerなしでも発生しますが、上記の手順では達成しようとしていることを説明しています。なぜ私は助けが必要な主要な問題ですが、それは新しいプロジェクトで行うことができないのか分かりません。 – Wesux

答えて

0

openglesテンプレートに変更がありました最後のIphone SDKから現在のIphone SDKへのプログラム。 ES2.0とES1.1の間で選択するためのサポートコードがあります。

ご注意ください。

+0

私はそれも考えて、私のテストのために新しいOpenGLESテンプレートを使用し、それも動作しませんでした。 EAGLViewやES1やES2レンダラーなどの関連クラスをサンプル・テンプレートからすべてコピーする場合を除いて、古いプロジェクトでは問題なく動作します。別の方法(ViewControllerクラスを新しいSDKのOpenGLESテンプレートに移動する)をしたいとは思わない。 – Wesux

4

EAGLViewをviewControllerのビューとして設定しようとすると、同様の問題が発生しました。代わりに、viewControllerのviewプロパティを標準のUIViewにアタッチします。次に、ビューが正常に読み込まれたとき(おそらくviewControllerのviewDidLoadメソッド内)、EAGLViewをインスタンス化し、それをサブビューとしてviewController.viewに追加します。

7

あなたが行ったことについての詳しい情報が不足していますが... IB経由で(つまり-initWithCoder:を経由して)EAGLViewをインスタンス化していますか、またはプログラムで(-initWithFrame:)ですか?

EAGLView.mを見ると、実際に初期化する必要があるのは-initWithCoder:だけです。その初期化コードを共有(または-initWithFrame:のみ)イニシャライザに移行するのは非常に簡単です。

+0

ありがとうございました – blueberryfields

関連する問題