Ja, hast du richtig verstanden. Bei Java wirst du dich darauf einstellen müssen, dass es einige Dinge nicht kennt, die für effektives OpenGL eigentlich notwenig sind.
Ich wollte die Initialisierung des Bytebuffer in eine Funktion packen, aber ohne Erfolg. Die Vectoren übernimmt er richtig, aber mit den Normalen stimmt etwas nicht mehr. Bei späteren Objecten übernimmt er nicht mal mehr die Vectordaten richig. Mit dem ausgeklammerten Teil funktioniert es ohne Fehler.
FluegeliVector enthält die Vectordaten in einer Float Array. FluegeliVectorBuffer wird für glVertexAttribPointer gebraucht.
In Java bin ich noch ein sehr starker Anfänger. :wink
Edit: Ups, habe den Fehler gesehen, werde es Morgen nochmals probieren.
Registriert: Di Feb 04, 2014 16:18 Beiträge: 6 Wohnort: 8700
Programmiersprache: Html
Hi, ich interessiere mich auch für den ByteBuffer. Kann mir jemand mal kurz erklären, wie dieser aufgebaut ist? Außerdem hätte ich noch eine Frage: Ich habe in der Java-Programmierung oft schon eine NullPointerException erlebt. Ist dies nicht auch eine Art eines Pointers? Kann man diesen nicht auch irgendwie anders verwenden?
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3828 Wohnort: Tespe (nahe Hamburg)
Kommt ein wenig später die Antwort. Ist aber die Folge, wenn man fremde Threads highjacked.
Zitat:
Hi, ich interessiere mich auch für den ByteBuffer. Kann mir jemand mal kurz erklären, wie dieser aufgebaut ist?
Die interne Struktur des Buffers sollte in 99% der Fälle keine Rolle spielen. Stelle es Dir vor als eine Aneinanderreihung vom Datentype hintereinander ein. Bedenke das bei OpenGL Dinge häufig anders herum erwartet werden BGR statt RGB. Das kannst dann leicht mit der Methode flip() entsprechend drehen.
Aber zurück zu z.B. den IntBuffer. Ein Anwendungsfall ist z.B.
Sollte eigentlich recht selbsterklärend sein. Es wird ein Buffer mit genau einem Element erzeugt. Danach füllen wir einen Int wert an der ersten Stelle ein und übergeben den Buffer an die OpenGL-Methode. Die Arbeit in Java und Buffer ist anfangs ein wenig gewöhnungsbedürftig, allerdings erzieht sie einem dazu vernünftig zu kapseln.
Zitat:
Ich habe in der Java-Programmierung oft schon eine NullPointerException erlebt. Ist dies nicht auch eine Art eines Pointers? Kann man diesen nicht auch irgendwie anders verwenden?
In Java gibt es keine Pointer. Es gibt aber natürlich Objektreferenzen, die naiv betrachtet nichts wesentlich anderes sind, außer das sichergestellt ist, dass die nicht plötzlich irgendwo in einem Speicherbereich landen, wo sie nichts zu suchen haben. Eine NPE ist eine Null-Referenz zeigt also ins Nirwana und somit einem nicht existierenden Objekt. Sie fliegt dann, wenn Du beginnst auf das Objekt das dort referenziert wurde zuzugreifen. Viele NPE in Anwendungen zeugen von einer schlampigen Qualität des Codes und sollten in der Praxis nicht auftreten. Üblicherweise hat der Entwickler vergessen ein Objekt zu initalisieren oder erwartet von einer Rückgabe eines Interfaces einen anderen Datentyp. Womit wir zum nächsten Grundsatz kommen "Null" ist keine Information
Code:
// Beim Zugriff auf s fliegt eine NPE. Das Objekt existiert nicht
Mitglieder in diesem Forum: 0 Mitglieder und 31 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.