Navigationslinks überspringen  

Android OpenGl Programmierung


Drawing3d für android ist ein mächtiges Tool zur Erstellung von Apps mit OpenGl. Das gesamte Paket im Source Code (c#) erhältlich!!


  • Allgemeines zur Erstellung von eigenen Apps für Android 

  • Android OpenGL Apps mit Drawing3d:


    1.Wir erzeugen wieder ein einfaches Projekt, wie in Allgemeines beschrieben ist. Nennen wir es "HelloWorld".
    2.Im Solutionexplorer sehen Sie einen Eintrag "Verweise". Mit der rechten Maustaste kan man einen "Verweis hinzufügen". Es dauert beim ersten mal ziemlich lange, bis sich folgendes Fenster öffnet:
    Referenz Manager


    Klicken des Browse... Button öffnet einen Fileopendialog. Navigieren sie zu dem downloadeten Drawing3dpaket. Darin finden Sie einen Ordner"Android\ Lib". In diesem Ordner ist "bin\Debug\Drawing3d.dll" das gesuchte File, das hinzugefügt werden muss. In der Liste der Referenzen sollte nun Drawing3d erscheinen. Damit ist das Wichtigste gemacht. Wir müssen nur noch "HelloWorld\Resources\layout\Main.axml" und "HelloWorld\MainActivity.cs" updaten.

    3. "HelloWorld\Resources\layout\Main.axml" sieht so aus:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:minWidth="25px"
    android:minHeight="25px">
    <WebView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/webView" />
    </LinearLayout>
    Wir fügen ein GLSurfaceView ein
     <android.opengl.GLSurfaceView
    android:id="@+id/SurfaceView"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:textDirection="locale" />
    und erhalten
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
    android:id="@+id/TextView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Infos" />
    <android.opengl.GLSurfaceView
    android:id="@+id/SurfaceView"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:textDirection="locale" />
    </LinearLayout>
    Visual Studio markiert zwar "android.opengl.GLSurfaceView" als "invalid child element", das darf uns aber nicht stören.
    Damit wäre "Main.axml" erledigt.

    4. MainActivity.cs sieht so aus:
    using System;
    using Android.App;
    using Android.Content;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.OS; namespace App1
    {
    [Activity(Label = "App1", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
    int count = 1; protected override void OnCreate(Bundle bundle)
    {
    base.OnCreate(bundle); // Set our view from the "main" layout resource
    SetContentView(Resource.Layout.Main); // Get our button from the layout resource,
    // and attach an event to it
    Button button = FindViewById<Button>(Resource.Id.MyButton); button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; }
    } }

    Als erstes fügen wir
       using Drawing3d;
    
    in den Usingteil ein.
    Als nächstes definieren wir eine eigene OpenGlDevice-Klasse MyOpenGl, die von OpenGlDevice abstammt:
       class MyDevice:OpenGlDevice
        {
            public override void OnPaint()
            {
              
                // draw something
                drawSphere(3);
             }
        } 
          
    Im Createteil von MainActivity definieren wir eine Instanz von MyDevice und ordnen - was das Wichtigste ist - seiner Eigenschaft SurfaceView jenes android.opengl.GLSurfaceView zu, das wir im Main.axml festgelegt haben. Schließlich schaut die MainActivity.cs so aus:
     using System;
    using Android.App;
    using Android.Content;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.OS;
    using Drawing3d;
    using Javax.Microedition.Khronos.Egl;
    using Javax.Microedition.Khronos.Opengles;
    
    namespace Sample
    {
        [Activity(Label = "Sample", MainLauncher = true, Icon = "@drawable/icon")]
        public class MainActivity : Activity
        {
         protected override void OnCreate(Bundle bundle)
            {
                  
                base.OnCreate(bundle);
             
                // Set our view from the "main" layout resource
                SetContentView(Resource.Layout.Main);
                TextView Info = FindViewById(Resource.Id.TextView);
         
                // Reference to your SurefaceView
                Android.Opengl.GLSurfaceView SurfaceView = FindViewById(Resource.Id.SurfaceView);
                // Make your own Device
                MyDevice Device = new MyDevice();
                // Bind it with SurfaceView
                Device.SurfaceView = SurfaceView;     
            }    
        }
     
        class MyDevice:OpenGlDevice
        { 
            public override void OnPaint()
            {
              // draw something
                drawSphere(3);
            }
        }
    }
    
    
    
    Das wäre Alles. Hoffentlich erscheint eine Kugel, wenn Sie mit <F5> starten. Viel Spaß und Glück.
    Sphere
Copyright © Drawing3D inc