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

1

08.10.2008, 12:35

OpenGL/DirectX unabhängig programmieren

Hallo,

in vielen Programmen oder Spielen kann man bei den Einstellungen wählen welchen der oben genannten 3DRenderer man verwenden möchte. Hat jemand von euch eine Ahnung wie die das in der Praxis bewerkstelligen? Wie kann ich Programme schreiben, die unabhängig von einem konkreten Renderer sind?

greez
Tschismo

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

08.10.2008, 12:43

Du wrapst beide API's und erstellst eine Schnittstelle, für die du dann 2 Implementierungen hast. ( Irrlicht mach das afaik in etwa so).

3

08.10.2008, 12:49

Zitat von »"drakon"«

Du wrapst beide API's und erstellst eine Schnittstelle, für die du dann 2 Implementierungen hast. ( Irrlicht mach das afaik in etwa so).

oder er benutzt einfach eine vorhandene Engine, die das tut ;)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

08.10.2008, 12:56

Zitat von »"PCShadow"«

Zitat von »"drakon"«

Du wrapst beide API's und erstellst eine Schnittstelle, für die du dann 2 Implementierungen hast. ( Irrlicht mach das afaik in etwa so).

oder er benutzt einfach eine vorhandene Engine, die das tut ;)


Das war aber nicht das, was er wissen wollte. ;)

Du antwortest auf die Frage: "Wie kann ich spiele programmieren" auch nicht: "Kauf dir ein Spiel und spiel das!"...

LukasBanana

Alter Hase

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

5

08.10.2008, 13:37

Sowas lässt sich in C++ seeehr gut bewerkstelligen.
Mit einer ElternKlasse und zwei oder mehreren UnterKlassen.

z.B. so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class TolleEngine_Device
{
    public:
        
        TolleEngine_Device();
        
        virtual ~TolleEngine_Device();
        
        virtual void RenderMaWas() = 0;
        
};

class OpenGL_Device : public TolleEngine_Device
{
    public:
        OpenGL_Device();
        
        void RenderMaWas(); // Hier werden nur OpenGL Funktionen aufgerufen

        
};

class Direct3D_Device : public TolleEngine_Device
{
    public:
        Direct3D_Device();
        
        void RenderMaWas(); // Hier werden nur Direct3D Funktionen aufgerufen

        
};

Coole Namen für die Klassen oder?! ;)

6

08.10.2008, 14:47

Re: OpenGL/DirectX unabhängig programmieren

Zitat von »"drakon"«

Das war aber nicht das, was er wissen wollte. ;)

Du antwortest auf die Frage: "Wie kann ich spiele programmieren" auch nicht: "Kauf dir ein Spiel und spiel das!"...

Er hat aber auch nicht gefragt: "Wie kann ich eine Engine/Bibliothek unabhängig von einem bestimmten Renderer programmieren" (Worauf du geantwortet hast), sondern

Zitat von »"Tschismo"«

Wie kann ich Programme schreiben, die unabhängig von einem konkreten Renderer sind?
Wozu man entweder selbst eine Engine/Bibliothek wie von dir beschrieben erstellen, oder, wie von mir vorgeschlagen, eine vorhandene benutzen kann :roll:

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

08.10.2008, 14:51

Re: OpenGL/DirectX unabhängig programmieren

Zitat von »"PCShadow"«


Er hat aber auch nicht gefragt: "Wie kann ich eine Engine/Bibliothek unabhängig von einem bestimmten Renderer programmieren" (Worauf du geantwortet hast), sondern

Zitat von »"Tschismo"«

Wie kann ich Programme schreiben, die unabhängig von einem konkreten Renderer sind?
Wozu man entweder selbst eine Engine/Bibliothek wie von dir beschrieben erstellen, oder, wie von mir vorgeschlagen, eine vorhandene benutzen kann :roll:


Zugegeben. Die Fragestellung lässt beides offen. :)

8

09.10.2008, 14:24

ja, das dachte ich mir schon, dass man das so in etwa anfangen muss. Aber gibt es zwischen den beiden APIs nicht doch sehr grosse Unterschiede (OpenGL verwendet ein rechtshändiges Koordinatensystem, DirectX ein linkshändiges, bei OpenGL gibt es Rect als Polygone als Basisprimitive, bei DirectX nur Dreiecke, etc). Ist es nicht sehr schwer all die Dinge in einer gemeinsamen API unter einen Hut zu bringen? Kennt jemand von euch eine fertige API zum anschauen, die das tut (und nur das)?

Anonymous

unregistriert

9

09.10.2008, 14:30

Warum machst du so einen Aufwand? OpenGL nehmen und gut ist. Ich wüsste jetzt keinen Grund OpenGL UND Direct3D zu nehmen, außer es gäbe Geld dafür. Der Sinn dahinter beides zu unterstützen erschließt sich mir nicht ganz, da es
A: Viel Abstrakter gehalten werden muss als wenn man nur eine API nutzt und
B: man mehr Pflege, Wartung in das Projekt invenstieren muss und
C: die fehleranfälligkeit enorm höher ist.


https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=10334

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

10

09.10.2008, 14:32

ja es ist nicht einfach. wenn man nicht beide APIs gut kennt kann man da sehr schnell unperformante lösungen bauen.

ich persönlich wüsste auch nicht, wie man die brücken am cleversten baut. daher lass ich die brücke und bleibe auf einer seite ;)

was ich damit sagen will: lerne eine gut da haste was in der hand!

Werbeanzeige