Speicherallokierung zum Rendern

  • Hallo zusammen,


    ich bin noch recht neu was Android betrifft und ich entwickle zur Zeit meine erste App. Ziel ist es, STL Daten (also eine Menge von Dreiecken) anzuzeigen.
    Für eine kleine Anzahl von Dreiecken (~ 4000), funktioniert es soweit ganz gut. Nur sobald es mehr wird (~ 100.000 Dreiecke), bekomme ich Speicherallokationsprobleme (was für ein Wort).
    Hier ist meine Vorgehensweise:


    Ich benutze eine GLSurfaceView zum Zeichnen


    a) ich lese die Daten ein und erstelle eine Liste von Dreiecken (3 * X/Y/Z und ein Normalenvektor für jedes Dreieck)
    b) ich erstelle ByteBuffers mittels allocateDirect() für die vertex Daten, die Normalen und die Indizes.
    c) ich füge die Daten den ByteBuffers hinzu
    d) ich rufe glVertexPointer, glNormalPointer auf und übergebe die ByteBuffers
    e) ich rufe glDrawElements() auf und übergebe den indexBuffer


    Sobald ich versuche, ca. 10 MB mittels allocateDirect() zu allokieren, stürzt mein Programm ab (ForceClose). Ich habe stattdessen versucht, allocate() aufzurufen. Das funktioniert soweit, allerdings stürzt es dann bei der glVertexPointer-Methode ab (auch für eine gerine Anzahl von Dreiecken)


    Mache ich etwas falsch??


    Kleine Zusatzfrage:
    muss ich glVertexPointer, glNormalPointer bei jedem Neuzeichnen aufrufen oder reicht es, die Methoden einmalig bei surfaceChanged() aufzurufen?


    Vielen Dank und Gruß,


    Mark

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!