Java でネイティブ コードを実行する唯一の方法である JNI を使用して、特別に生成された共有ライブラリ (Windows では .dll、Linux/Android では .so) をロードし、そのライブラリで宣言されたネイティブ関数を呼び出すことができます。バックエンドを c で書きたい場合は、コードを開始するための関数を含む共有ライブラリを c で作成する必要があります。たとえば、次のようにします。
void init(void)
{
...
}
そして、次のような別の関数:
void setWindowHandle(void* handle)
{
...
}
次に、最初の関数を呼び出して Java から C コードを開始し、2 番目の関数を使用してハンドルを Java から C コードに渡すことができます。
特定の自動生成されたヘッダー ファイルのインポートを必要とし、Java タイプ間を行き来する必要がある JNI 以外に、この共有ライブラリへのリンクにはJNAの使用を強くお勧めします。JNA は、型変換を処理する JNI のラッパー API であり、c に Java 環境コードを含める必要はありません。
最後に、コードのシンプルさと互換性のために、 JOGL (標準 Java の opengl バインディング)を使用して Java で opengl インターフェイス コードを記述することをお勧めします。 Androidデバイス用です。c の方がはるかに高速であり、使用する必要があると考えるかもしれませんが、opengl とのインターフェースに関する限り、本当に計算負荷の高いコードはグラフィックス カードによって実行されるだけであり、opengl インターフェース コードが行う必要があるのは、それに何を伝えるかだけです。描く。