Почему этот код не работает для настройки базового Android OpenGL? - PullRequest
0 голосов
/ 02 октября 2011

Эй, я пытаюсь просто настроить базовую структуру для некоторой базовой графики. Однако, когда я запускаю этот код, приложение заставляет меня принудительно выйти на эмуляторе. Я использую Android 2.3.

Я использовал этот сайт, чтобы получить это далеко http://developer.android.com/resources/tutorials/opengl/opengl-es10.html

Пожалуйста, помогите. Я знаком с OpenGL, но не для Android

public class SampleActivity extends Activity {
/** Called when the activity is first created. */
private GLSurfaceView mGLView;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mGLView = new GLSurfaceView(this);     
    setContentView(mGLView);
}

@Override protected void onPause()
{
    super.onPause();
    mGLView.onPause();
}

@Override protected void onResume()
{
    super.onResume();
    mGLView.onResume();

}

   }

class SampleSurfaceView extends GLSurfaceView
{

public Sample2SurfaceView(Context context) {
    super(context);

    setRenderer(new SampleRenderer());
}

}

public class SampleRenderer implements GLSurfaceView.Renderer 
{
private FloatBuffer triangleVB;
public void onSurfaceCreated(GL10 gl, EGLConfig config)
{    
    gl.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
}       
public void onDrawFrame(GL10 gl)
{        // Redraw background color    
      gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    }    
public void onSurfaceChanged(GL10 gl, int width, int height)
{   
    gl.glViewport(0, 0, width, height);
    }

10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): java.lang.RuntimeException: не удалось возобновить действие {android.SampleActivity}: java.lang.NullPointerException 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.app.ActivityThread.performResumeActivity (ActivityThread.java:2120) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.app.ActivityThread.handleResumeActivity (ActivityThread.java:2135) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1668) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.app.ActivityThread.access $ 1500 (ActivityThread.java:117) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:931) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.os.Handler.dispatchMessage (Handler.java:99) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.os.Looper.loop (Looper.java:123) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.app.ActivityThread.main (ActivityThread.java:3683) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на java.lang.reflect.Method.invokeNative (собственный метод) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на java.lang.reflect.Method.invoke (Method.java:507) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): в dalvik.system.NativeStart.main (собственный метод) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): вызвано: java.lang.NullPointerException 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.opengl.GLSurfaceView.onResume (GLSurfaceView.java:512) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.TagToMobileAlbum.TagToMobileAlbumActivity.onResume (TagToMobileAlbumActivity.java:28) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1150) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): на android.app.Activity.performResume (Activity.java:3832) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): в android.app.ActivityThread.performResumeActivity (ActivityThread.java:2110) 10-03 00: 25: 57.561: ОШИБКА / AndroidRuntime (330): ... еще 12 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): java.lang.RuntimeException: Невозможно возобновить активность {android.TagToMobileAlbum / android.TagToMobileAlbum.TagToMobileAlbumActivity}: java.lang.NullPointerException 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): в android.app.ActivityThread.performResumeActivity (ActivityThread.java:2120) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): на android.app.ActivityThread.handleResumeActivity (ActivityThread.java:2135) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1668) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): на android.app.ActivityThread.access $ 1500 (ActivityThread.java:117) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:931) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): на android.os.Handler.dispatchMessage (Handler.java:99) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): на android.os.Looper.loop (Looper.java:123)10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): на android.app.ActivityThread.main (ActivityThread.java:3683) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): на Java.lang.reflect.Method.invokeNative (собственный метод) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): в java.lang.reflect.Method.invoke (Method.java:507) 10-03 00:34: 05.661: ОШИБКА / AndroidRuntime (340): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): на ком.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): в dalvik.system.NativeStart.main (собственный метод) 10-03 00:34: 05.661: ОШИБКА / AndroidRuntime (340): вызвано: java.lang.NullPointerException 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): в android.opengl.GLSurfaceView.onResume (GLSurfaceView.java:512) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): на android.SampleActivity.onResume (SampleActivity.java:28) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1150) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): at android.app.Activity.performResume (Activity.java:3832) 10-0300: 34: 05.661: ОШИБКА / AndroidRuntime (340): в android.app.ActivityThread.performResumeActivity (ActivityThread.java:2110) 10-03 00: 34: 05.661: ОШИБКА / AndroidRuntime (340): ... еще 12

Ответы [ 2 ]

1 голос
/ 09 октября 2011

У меня была такая же проблема, и, глядя на другой пример кода, мне удалось ее решить.Я не уверен, почему это имеет значение, но я переместил вызов setRenderer в конструктор Activity, и это, похоже, решило проблему.Таким образом, ваш onCreate будет выглядеть примерно так:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mGLView = new GLSurfaceView(this);
    mGLView.setRenderer(new SampleRenderer())
    setContentView(mGLView);
}
0 голосов
/ 20 октября 2012

1) Ваш конструктор для SampleSurfaceView не соответствует имени класса.

2) Вам необходимо установить SurfaceView Renderer, прежде чем установить ContentView.

Помимо прочего, вы, кажется, никогда не используете SampleSurfaceView. Если вы хотите расширить GLSurfaceView, вам нужно использовать этот расширенный класс. Переключите свой личный GLSurfaceView и все его экземпляры на SampleSurfaceView. В настоящее время ваш SampleSurfaceView класс никогда не используется.

...