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.