3.7 Mit Zeigern arbeiten

Mehrere OpenGL-Befehle erwarten, dass Sie ihnen einen Zeiger auf einen Roh-Speicher übergeben. Das direkte Arbeiten mit Zeigern ist der effizienteste Weg, um mit OpenGL zu interagieren, da es jegliche Verwaltungsdaten vermeidet, die dadurch entstehen, wenn der Inhalt von Hollywood-Tabellen zuerst in den Speicherpuffer gelesen werden muss.

Sie können die Befehle der Speicherblockbibliothek von Hollywood verwenden, um Speicherpuffer zuzuordnen, sie zu lesen oder zu schreiben und einen Zeiger auf ihren Roh-Speicherpuffer zu erhalten. Um einen Speicherpuffer zuzuweisen, verwenden Sie den Befehl AllocMem(), um aus einem Speicherpuffer zu lesen den Befehl Peek(), während Poke() zum Schreiben in einen Speicherpuffer verwendet werden kann. Schließlich gibt GetMemPointer() den Zeiger eines Speicherblockobjekts zurück. Sie können den Rückgabewert von GetMemPointer() an alle OpenGL-Befehle übergeben, die ein Zeigerargument haben.

Hier ist ein Beispiel:

 
AllocMem(1, 640*480*4)
Local ptr = GetMemPointer(1)
gl.ReadPixelsRaw(0, 0, 640, 480, #GL_BGRA, #GL_UNSIGNED_BYTE, ptr)
... ; do something with the data
FreeMem(1)

Der obige Code liest 480 Zeilen von 640 Pixeln in das Speicherblockobjekt 1 ein. Sie könnten dann die Daten mit WriteMem() in eine Datei schreiben, Sie könnten sie in eine Tabelle mithilfe von MemToTable() konvertieren oder einzelne Werte daraus mit Peek() lesen. Weitere Informationen finden Sie in der Dokumentation der Speicherblockbibliothek von Hollywood.


Navigation zeigen