2016-09-04 5 views
0

これは私がこの問題を投稿した4回目です。それは複雑な問題です、私はそれを知っています。Android NDK、OpenGL 2、VBOでレンダリングがクラッシュする

私はすべてを説明しようとしています。重要であるかどうかわからないので、この問題はコード内で愚かであり、わかりません。

私は数日前にC++ NDKのレンダリング部分でAndroidのゲームエンジンを開発していましたが、これに問題はなく、Android搭載デバイスで正しくゲームを見ることができました。その後、 Android Studioを1.5.2から2.1.3に更新しました。実験的なgradleプラグインを0.7.0から0.7.3に更新しました。私はAndroid 6を搭載したNexus 6pでアプリをテストしましたが、すべてうまくいきました。 Android 4でテストしたところ、何も表示されず、Android 5でテストしたところ、何かが表示されていましたが、正しく表示されませんでした。

今、私はVBOで描画するとレンダリングが壊れて何もレンダリングされないことがわかりました。背景だけがglClearColorに設定された色で表示されます。

VBOを使わないで三角形を描画すると正しく描画されますが、同じ三角形やVBOで描画するとレンダリングがクラッシュし、バックグラウンドのみが表示されます。 VBOで他のものを描画すると、コードglBindBufferに到達するとレンダラーがクラッシュするとすぐにglDrawElementsに電話しても問題ありません。

  • は1.5.2
  • 格下げ実験プラグイン
  • ダウングレードのGradle 2.14.1から2.10私は「
  • にAndroidのメーカーに戻る:

    はので、私はすでに試した、それのthatsすべてのGLerrorsを確認し、glを呼び出すたびに0を返します。

  • 私はすべてのコードをゼロから作成し始めました(ちょうどC++コード)。 同じ結果を得ました

これは私を夢中にしています。私はこれで5日を無駄にし、より多くの時間が経過すると、私は眠気を感じる。

これらは私のファイルです:

  • InterfaceJNI.h
  • InterfaceJNI.cpp
  • OpenGLMng.h
  • OpenGLMng.cpp
  • File.h
  • File.cpp
  • tmp.h
  • tmp.cpp
  • 私はこの問題を解決し、その些細な問題のために、愚かに感じることができると思います。

    私はすべてのアイデアを感謝したり助け、感謝

    EDITます:多分問題はコードではありませんが、多分、Gradleの設定で、あるいはマニフェストに、またはJavaレンダラ部にありますまたはどこでも、私は見つけることができません

    +0

    スタックトレースを見ましたか?実際に 'glBindBuffer()'でクラッシュしますか? –

    +0

    @この問題は、アプリケーションがクラッシュせず、コードが実行されていたが、以前のすべての入力を無効にしたため、スタックトレースに何も表示されなかったということだった – quetzalfir

    答えて

    0

    最後に私はそれを解決しました。私は2つの問題が見つかりました:

    1. が、私はバッファをアンバインドするための明示的なglBindBuffer(GL_ARRAY_BUFFER, 0);を配置する必要があり、私はこの段階では、ということをしなければならない理由は、私はそれを必要としなかった、ので、私は、 を知らない 前。
    2. GL_UNSIGNED_INTと思われますが、アンドロイド4には、もう一度、私は なぜ今は存在しないし、数日前にそれをしたのか分かりません。

    だから、主な問題は解決されますが、なぜ誰かがなぜこれを説明したければ、それは素晴らしいことでしょう。

    私はプロプライエクト内のすべてのクラスを変更するつもりです

    +1

    インデックスに 'GL_UNSIGNED_INT'を使用することはES 2.0では標準ではありません。 'OES_element_index_uint'拡張をサポートするデバイスでのみ動作します。 –

    関連する問題