Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

SM3D

Frischling

  • »SM3D« ist der Autor dieses Themas

Beiträge: 50

Wohnort: Lübeck, Germany

  • Private Nachricht senden

1

13.02.2004, 16:01

DirectX Setup per #ifdefine

:roll: Hey alle zusammen,,,

ich habe mich mit dem #ifdefine kram noch nicht so aus ein ander gesetzt, aber mir kam die Idee das man das doch sicher gut für den Zweck des Directx Setup's nutzen könnte. Also es geht darum das ich verschiedene Varianten nutzen möchte :

1.) Mit Directx Setup Unterstützung (Lokal mitgeliefert)
2.) Komplett Ohne Directx Setup Unterstützung
3.) Per Download von MS bei I-Net Anbindung (zb. DSL)
usw.

Könnte mir da jemand helfen, oder einen Tip geben wie ich diese #ifdef Blöcke schreiben könnte ??? :jojo:

Oder sonst vielleicht einen anderen Lösungsansatz z.B. per Parameter Übergabe oder so.
Created by SM3D
[Game Development]


WERBUNG für ein gutes Projekt
http://www.your-dreamland.de/pics/bannerunder.jpg

2

13.02.2004, 16:11

warum einen #ifdef Block?
Überprüfe ob die Datei d3d9.dll beim User da ist, falls nein fragst den User wie er DirectX installieren möchte
Do, ut des!
Ceterum censeo, carthaginem delendam esse

SM3D

Frischling

  • »SM3D« ist der Autor dieses Themas

Beiträge: 50

Wohnort: Lübeck, Germany

  • Private Nachricht senden

3

13.02.2004, 16:48

Hey,,,

danke für den Tip, aber es geht nicht darum zu prüfen und zu fragen welche Version vorhanden ist, bzw. ob diese installiert werden soll. OK, vielleicht habe ich das oben schlecht erklärt. Es geht dabei um folgendes, stell Dir vor Du hast ein Spiel welches Du im Internet zum Download anbietest, jetzt soll der Benutzer direkt auswählen welche Version er downloaden möchte (die komplette mit Directx, die kleine für langsame I-Net Verbindungen, usw.).

Damit ich jetzt nicht für jede Version den Code und die Konfig umtippeln muß wollte ich einfach diese Blöcke einfügen, wo ich dann für die entsprechende Version den Defin setze. :wirbel:

Es gibt ja auch die visierteren User die eh schon immer Ihr System auf dem laufenden halten, sprich DX, Treiber, etc. und halt die die es nicht so ganz wissen, oder die davon gar keine Ahnung haben, dies ist z.B. oft in meinem privat Kundenkreis oft der Fall. 8)
Created by SM3D
[Game Development]


WERBUNG für ein gutes Projekt
http://www.your-dreamland.de/pics/bannerunder.jpg

4

13.02.2004, 17:20

Du willst mehrere Versionen eines Programms haben. Dafür sind diese #ifdef oder #if define(...) Blöcke gut geeignet. Aber wircklich Konfigurieren kannst du damit DX nicht. Du kannst höchstens festlegen ob das Projekt überhaupt DX nutzen soll

Quellcode

1
2
3
4
#if define(USE_DIRECTX)
#include <d3d9h.>
#include <dinput.h>
#endif
Oder welche Version du von DirectX nutzen willst. Das könnte dann so aussehen

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#if define(USE_DIRECTX)
#ifndef DIRECTX_VERSION
#define DIRECTX_VERSION 0x0900
#endif

#if define(DIRECTX_VERSION == 0x0900)
#define DIRECT3D_VERSION 0x0900
#endif
#if define(DIRECTX_VERSION == 0x0800)
#define DIRECT3D_VERSION 0x0800
#endif

#include <d3d9.h>
#endif
Ist natürlich nur ein Beispiel und man könnte das sicherlich auch noch etwas eleganter lösen. Jetzt brauchst du nur noch für die Haupthaeder folgendes festlegen

Quellcode

1
2
#define USE_DIRECTX // Jetzt benutzt das Projekt DirectX
#define DIRECTX_VERSION 0x0900 // Es wird DirectX 9 benutzt
ein Beispiel für eine Anwendung die DX 9 nutzen soll.

So ich hoffe es war das was du wissen wolltest. Allerdings hat diese Lösung einen Hacken. Du musst deinen gesamten Code darauf auslegen.

Ich würde es allerdings so machen das man verschiedene DLL's hat, die dann die einzelnen Versionen des Programmes darstellen. Die Exe benutzt dann nur die DLL und bleibt damit immer gleich.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

SM3D

Frischling

  • »SM3D« ist der Autor dieses Themas

Beiträge: 50

Wohnort: Lübeck, Germany

  • Private Nachricht senden

5

13.02.2004, 17:27

:huhu: :) Jo DragonMaster,,,

Du gehst in die richtige Richtung, allerdingst handelt es sich um ein komplettes Directx Projekt, es soll lediglich festgelegt werden ob die Directx Setup Function mit eingebunden wird oder eben auf Wunsch nicht.

Deine #IFDEF's haben mir aber bereits geholfen das ist genau die richtung die ich gesucht hatte. :huhu: DANKE :huhu:
Created by SM3D
[Game Development]


WERBUNG für ein gutes Projekt
http://www.your-dreamland.de/pics/bannerunder.jpg

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

13.02.2004, 20:39

Du weißt schon, dass #ifdef zur Kompilierzeit ausgewertet wird, und nicht zur Laufzeit, oder? Weil irgendwie klingt es danach, als wolltest Du dynamisch prüfen, ob DirectX vorhanden ist, oder ob es noch installiert werden muss. Das geht damit nämlich nicht.

SM3D

Frischling

  • »SM3D« ist der Autor dieses Themas

Beiträge: 50

Wohnort: Lübeck, Germany

  • Private Nachricht senden

7

13.02.2004, 21:00

Ja ne, das ist schon Klar und auch bezweckt, ich möchte für die Kompilierung angeben ob die Directx Setup Functionen aktiv gesetzt werden oder inaktiv, NICHT wärend der Laufzeit. Es sollen also mehrere Versionen erstellt werden, eben mit und ohne aktiven DX Setup Functionen. Es dreht sich hier nicht um das DX selbst, das ist immer aktiv, da es sich um ein DX Game handelt:
Created by SM3D
[Game Development]


WERBUNG für ein gutes Projekt
http://www.your-dreamland.de/pics/bannerunder.jpg

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

13.02.2004, 21:11

Gut, ich verstehe nun, was Du meinst.
Es war mir nur nicht ganz klar!

SM3D

Frischling

  • »SM3D« ist der Autor dieses Themas

Beiträge: 50

Wohnort: Lübeck, Germany

  • Private Nachricht senden

9

13.02.2004, 21:24

;) Dann hätten wir das ja jetzt geklärt...! *g*
Created by SM3D
[Game Development]


WERBUNG für ein gutes Projekt
http://www.your-dreamland.de/pics/bannerunder.jpg

DarthB

Treue Seele

Beiträge: 265

Beruf: Schüler

  • Private Nachricht senden

10

20.02.2004, 13:15

Hmm ich frage mich jetzt:
Warum lädst du dir nicht einfach die DXSetup.exe von MS down, ich meine die, die zum Internet connected um DX zu installieren.
Dann überprüfst du ob der User die DX Version installiert hat die du brauchst und wenn nein startest du die install.exe und gibst vorher noch ne Meldung an den User aus. Die exe ist nur nen paar KB groß.

Das wäre dann sogar ziemlich DAU sicher. Und das soll es doch sein oder? ;)

So löse ich es zZ. ich sehe dadrin mehre Vorteile:
- Ich brauche weniger Webspace.
- Verwirrt den User nicht mit mehren Version.
- meiner Meinung nach leichter zu realisieren als dein Lösungsvorschlag.

soviel von mir!

Ciao DarthB :huhu:

Werbeanzeige