2016-10-27 1 views
1

AndroidでJava言語を使用してOpen GLプロジェクトを開発しました。このクラスGLSurfaceView.RendererレンダラーなしでCを使ってAndroidでOpenGLを開発

ここで、OpenGLで開発しているアンドロイドのNDKプロジェクトを作成したいと思います。 しかし、私は好きではないGLSurfaceView.Renderer。 AndroidのJavaソースはフレームワーク内でC souceを呼び出しています。だから、私は、Java VMなしでフレームワーク上でオープンソースのlibを呼び出すことは、Javaより速く実行すると思います。

したがって、たとえばNativeActivityなどの純粋なC++でサーフェスビューのOpenGLコンテキストを作成することは可能ですか?

答えて

1

ネイティブのC++インターフェイスは、GoogleがABIの安定性を約束していないという問題を抱えていました。これはバイナリが特定のバージョンのC++インタフェースに依存することを意味します。しかし、単純な解決策は、Javaの初期化コードを持っているし、C + +を使用してパスをレンダリングするだけでした。 Java初期化のためのわずかな余分なコストは、そのコードが非常に稀にしか実行されないため、本当の懸念事項ではありません。

GoogleがABIの安定性を変更した場合は、ANativeWindowを作成してeglCreateWindowSurfaceに渡すことができます。

+0

私は、cocos2dxがアンドロイドやその他のOSで開発するためにC++を使用していることがわかりました。ネイティブのC++で開発するには何らかの方法があると思います。 –

0

「MoreTeapots」というAndroidの例を見てください。可能な限りC++を可能な限りJavaを使用します。別のスレッドですべてを実行し、UIスレッドと通信してイベントを受信します。

しかし、少なくともRendererクラスを使用していないということではなく、すべてのフレームでC++コードを呼び出すJavaより高速に動作するわけではありません。

関連する問題