Update der OpenGL Programmbeispiele

Kurz Notiert – alle Programmbeispiele sind dahingehend überarbeitet worden, um mögliche Kompatibilitätsprobleme mit dem neuesten AMD Catalyst Treiber 12.1 zu beheben. Die überarbeiteten Demoprogramme stehen ab sofort zum Download bereit.

OpenCL Tutorial – Offline Compilation (Download)

In der Regel werden OpenCL-Programme zur Laufzeit für ein zuvor ausgewähltes Gerät – beispielsweise für die in einem Rechner verbaute Grafikkarte – kompiliert. Alternativ zu diesem als Online Compilation bekannten Verfahren, lassen sich auch bereits im Vorfeld kompilierte Programme verwenden (Offline Compilation). Der Nachteil der Offline Compilation besteht jedoch darin, dass ein vorkompiliertes Programm immer nur auf einer einzigen Plattform und einem einzigen Gerät lauffähig ist.




Für das heutige Tutorial wurde die COpenCLProgram-Klasse aus dem letzten Programmbeispiel dahingehend erweitert,


  • dass sich OpenCL-Programme kompilieren und im Anschluss daran abspeichern lassen (Offline Compilation, Build_PrecompiledClBinary()) und
  • dass nunmehr auch vorkompilierte Programme verwendet werden können (Build_ProgramFromPrecompiledClBinary()).

      Speicherverwaltung – Random Memory Allocation

      Gutes Ressourcenmanagement zählt zu den wichtigsten Herausforderungen bei der Entwicklung eines Computerspiels. Bei der Darstellung von detailreichen und weitläufigen Spielewelten müssen kontinuierlich die hierfür benötigten Geometrie- und Textur-Daten geladen und die nicht mehr benötigten Daten aus dem Speicher entfernt werden (Streaming). Betrachten wir als Beispiel das Spiel Minecraft. Lediglich die Teile der Spielewelt, die sich im näheren Umfeld des Spielers befinden, werden auch wirklich in den Speicher geladen. Die Welt wird hierbei in sogenannte Chunks eingeteilt, wobei jeder Chunk aus 16 (Breite) mal 16 (Länge) mal 128 (Höhe) Blöcken besteht. Insgesamt werden 81 Chunks im Speicher gehalten, die in einem 9 mal 9 Quadrat um den Spieler herum gruppiert sind.
      Betrachten wir als zweites Beispiel kurzlebige Spieleobjekte wie Waffenprojektile und Trümmerteile die noch dazu in großer Zahl auftreten. Der für diese Objekte benötigte Speicher muss sich möglichst schnell dynamisch allozieren (zuweisen) und wieder freigeben lassen. Kurzum, ohne eine vernünftige Speicherverwaltung sind wir völlig aufgeschmissen.

      Interessante Artikel