NDKのopenGL esサーフェスをレンダリングしようとしていますが、作業の初期段階で停止しています。私は、NDKの3dの例に似た設定をしています。私は、GLSurfaceビューを継承するクラスと、GLSurfaceView.Rendererを継承するクラスを持っています。私の.cファイルには、何もしない簡単な方法があります。その中に何も入っていない単なる空白関数です。私は、このメソッドをアクティビティのonCreateメソッドから継承したクラスで呼び出すことができます。
プライベート静的ネイティブvoid nativeSetup();GLSurfaceViewクラスのNDKコール
プログラムは正常に動作します。しかし、GLSurfaceViewクラスの1つに呼び出し(および宣言)を入れると、プログラムはすぐに失敗します(nativeSetupは問題の呼び出しです)。私はすべてがネイティブコールなしでうまく動作していることを確認しました(色付きのサーフェスが描画されます)。なぜ私はGLSurfaceクラスからネイティブコードを呼び出せないのですか?
私のCファイル:
#include <string.h>
#include <jni.h>
void Java_com_test_intro_nativeSetup(JNIEnv* env){}
非作業的に私のjavaファイル:?
package com.test;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.app.Activity;
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
public class intro extends Activity {
static{
System.loadLibrary("graphrender");
}
private GLSurfaceView mGLView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
mGLView = new GraphGLSurfaceView(this);
setContentView(mGLView);
}
}
class GraphGLSurfaceView extends GLSurfaceView {
GraphRenderer mRenderer;
public GraphGLSurfaceView(Context context) {
super(context);
mRenderer = new GraphRenderer();
setRenderer(mRenderer);
}
}
class GraphRenderer implements GLSurfaceView.Renderer {
private static native void nativeSetup();
private float _red = 0.9f;
private float _green = 0.2f;
private float _blue = 0.2f;
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
Log.d("intro", "Got to intro 4");
}
public void onSurfaceChanged(GL10 gl, int w, int h) {
gl.glViewport(0, 0, w, h);
nativeSetup();
//Log.d("intro", "Got to intro 2" + debugStr);
}
public void onDrawFrame(GL10 gl) {
Log.d("intro", "Got to intro 3");
gl.glClearColor(_red, _green, _blue, 1.0f);
// clear the color buffer to show the ClearColor we called above...
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
}
}
私はこのクラスの名前を変更するのを忘れました。ありがとうございました。 – Hohohodown