Home - Programmieren - Visual Basic - Grundlagen von DirectX
Hinweis: Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich. Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren. [Druckansicht] [Als E-Mail senden] [Kommentar verfassen] Einleitung DirectX ist eine low-level API, die es uns erlaubt 2D-Grafik, 3D-Grafik, Audio-, Eingabe- und Netzwerkfähigkeiten in unsere Anwendungen einzubauen. Mit der in Windows integrierten GDI (Windows Graphics Device Interface) konnten wir bisher nur Spiele wie (Text)Adventures und Kartenspiele programmieren. Für andere, anspruchsvollere Aufgaben, wie z.B. Echtzeitstrategie oder Actionspiele, ist sie zu langsam. Deshalb wurde DirectX, das zunächst nur für C++ verfügbar war, entwickelt. Ab Version 7 gibt es nun endlich auch DirectX zur Verwendung unter Visual Basic. Obwohl es schnellere Programmiersprachen (z.B. C++/C#) gibt, ist es dennoch zu empfehlen, auch DirectX-Spiele mit Visual Basic zu erstellen. Die Einbindung der DLLs, wie auch die Bearbeitung des Quellcodes und der DirectX-Objekte, ist wesentlich einfacher als mit einer anderen Programmiersprache. Schnittstellen DirectX beinhaltet mehrere Schnittstellen, die wir benötigen, um Spiele zu programmieren. Die wohl wichtigste dieser Schnittstellen ist DirectDraw. Sie stellt Grafik, Schrift und Animation auf dem Bildschirm dar. Aber was nützt uns nur die beste Grafik, wenn der Spieler unser Spiel nicht steuern kann? Hier die Schnittstellen: DirectInput Für den Bereich der Steuerung ist DirectInput zuständig. Wir können damit den aktuellen Zustand eines oder mehrerer Eingabegeräte abfragen. Eingabegeräte werden nochmals in mehrere Bereiche unterteilt: Tastatur, Maus und Joystick. Darunter sind auch Maus- und Joystick ähnliche Geräte wie Trackball, Touchpad, Gamepad und Lenkrad zusammengefasst. Eingabegeräte, die die Force Feedback Technologie benutzen werden ebenfalls unterstützt. Auch für die Zukunft ist DirectInput bestens gerüstet: Es können sogar Geräte eingesetzt werden, die heute technisch noch gar nicht genau definiert sind! DirectSound Jetzt fehlt in unserem Spiel nur noch der richtige Klang. Die DirectX-Schnittstelle, die Musik und Soundeffekte umfasst heißt DirectSound. Mit DirectSound sind wir in der Lage den Speicher der Soundkarte effektiv zu nutzen. Dies wird besonders beim Streaming von langen Sounddateien deutlich. Anstatt die ganze Datei in den Speicher zu laden, wird nur ein kleiner Teil des Soundkartenspeichers reserviert, in den kontinuierlich Quelldaten aus der Sounddatei geschrieben und ausgelesen werden. DirectSound kann auch verschiedene Effekte auf die im Speicher abgelegten Dateien anwenden. So stehen zum Beispiel Klangoptionen wie Balance, Volume und Frequenz zur Verfügung, die wir nach belieben manipulieren können. DirectPlay Eine weitere DirectX-Schnittstelle ist DirectPlay. Wir benötigen sie, wenn wir in unserem Spiel eine Multiplayer-Funktion einfügen möchten. DirectDraw DirectDraw ist die Komponente zum Zeichnen und deshalb die wohl wichtigste der DirectX-Komponenten. Man kann damit nicht nur 32-bittige und hochauflösende Spiele programmieren, nein, das Beste daran ist, das man die langsame Windows GDI endlich los wird, da DirectDraw direkt auf die Hardware zugreift und keine Umwege über Windows macht. Dies geschieht über den sogenannten HAL (Hardware Abstraction Layer), der auf der niedrigsten Ebene von DirectX arbeitet. Der HAL greift auf die Treiber der Grafikkartenhersteller zu, um direkt mit der Hardware zu kommunizieren. Gerade wegen dieser direkten Kommunikation ist dieser Layer der Schnellste. Natürlich greift man nicht selber auf den HAL zu, das erledigt DirectX für uns. ![]() Der Zugriff über die GDI würde wesentlich länger dauern, da diese noch den Weg über die DDI (Device Display Interface) und den HEL (s.u.) nimmt. Wie man in der Grafik oben sehen kann, gibt es eine Ebene über dem HAL noch den HEL (Hardware Emulation Layer). Normalerweise ist DirectX so programmiert, dass es die Vorteile der Hardware ausnutzt, wenn diese existiert. Aber DirectX arbeitet auch, wenn keine entsprechende Hardware vorhanden ist. Nehmen wir zum Beispiel an, dass wir auf unserem Computer eine Grafik-Engine geschrieben haben, welcher eine Grafikkarte installiert hat, die das Drehen von Bitmaps unterstützt. Auf einem anderen Computer, dessen Grafikkarte auch das Drehen von Bitmaps unterstützt läuft der Code mit voller Geschwindigkeit. Aber was, wenn dieser das Drehen von Bitmaps nicht unterstützt? Genau dazu ist der Hardware Emulation Layer da. Der HEL emuliert die Funktionalität des HAL, indem er verschiedene Software-Algorithmen anwendet, sodass man keinen Unterschied erkennen kann. Natürlich läuft der Code emuliert langsamer, aber, und das ist das Wichtigste, er läuft! DirectSound DirectSound ist ein Bestandteil des Microsoft DirectX SDK, genauso wie DirectDraw und DirectInput. Mit DirectSound lassen sich mehrere WAVE-Dateien gleichzeitig abspielen, und zwar unendlich viele auf einmal. Visual Basic kann ohne DirectSound noch nicht einmal eine ganz normale WAVE-Datei abspielen. Dazu benötigt man dann schon eine Funktion aus der API, die aber leider auch nur begrenzte Möglichkeiten bietet. Dies sind nicht alle Technologien und Schnittstellen, die uns das DirectX-Objekt zur Verfügung stellt. Des weiteren gibt es noch Direct3D (3D-Grafik), DirectSound3D (3D-Sound), DirectMusic (Musik) und DirectSetup (Installation). DirectX in die Entwicklungsumgebung einfügen Bevor wir die DirectX-Komponenten in unserem Programm benutzen können, müssen wir Visual Basic sagen, wo es die DLL finden kann. Dazu wird ein Verweis auf die Datei dx7vb.dll erstellt.
![]() ![]() Falls im Auswahlfenster nicht der Eintrag DirectX 7 for Visual Basic Type Library erscheint, muss sichergestellt werden, dass sich die Datei dx7vb.dll im Windows Systemordner befindet und dass sie korrekt registriert wurde. Um die Datei zu registrieren, muss diese einfach nur per Drag & Drop auf die Datei regsvr32.exe (ebenfalls im Systemverzeichnis) geschoben werden. Das Auswahlfenster verschwindet nun, und wir haben wieder das leere Formular vor uns. Um die korrekte Einbindung nun auszuprobieren, doppelklicken wir auf das Formular und wechseln dann von der Ereignisprozedur Form_Load() in den Deklarationsabschnitt. Dort tippen wir die nachfolgende Zeile ein.
Wir bemerken nun, dass sich bei der Eingabe ein kleines Fenster unten rechts von der aktuellen Cursorposition öffnet. Dieses hilft uns bei der Auswahl der benötigten DirectX-Objekte, Methoden, Eigenschaften und Konstanten.
|
![]() ![]() ![]()
Autoren:04603
Artikel:00815 Glossar:04116 News:13564 Userbeiträge:16556 Queueeinträge:06267 ![]()
Projektsteuerung statt Anwesenheitskontrolle
MONDroid - your monitoring Solution for Android with PRTG-Support Red-Hosting jetzt mit erweitertem Shop-Webhosting-Angebot [Mehr News] ![]()
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
|