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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

61

12.07.2012, 15:06

Jap, genau das mein ich mit kaputter Objektorientierung. Es ist formal gesehen zwar grundsätzlich OO, aber eben nicht vernünftig. Und es macht die API eben nicht nur teilweise wirklich anstrengend zu benutzen, sondern macht wohl auch die Implementierung im Driver unnötig kompliziert...

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (12.07.2012, 15:11)


Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

62

12.07.2012, 15:08

Zitat

Aber eben in den richtigen Teilen.

Was auch den größten Teil in OpenGL ausmacht.

Zitat

Was verstehst du denn nicht?

Wenn du an einer Textur etwas umstellen willst, dann bindest du die halt vorher.
Ist das wirklich etwas so anderes, als wenn du hinter der Texturvariable einen Punkt\Pfeil hinmachst?
Das sind doch eindeutig nur ästehtische Gründe.

Zitat

Sorry, aber das Inferface ist Imperativ, nicht Objekt-Orientiert. Wie er das intern abhandelt, das ist mir an der Stelle total egal, denn die API ist es nicht, sondern eine grauenvolle Ansammlung von Funktionen. Nicht Methoden und Klassen, sondern Funktionen.

Bloß weil du in C++ nicht einfach einen Punkt\Pfeil hinmachen kannst um drauf zu zugreifen; ist eine API deiner Meinung nicht mehr objektorientiert?
Komische Ansichtsweise.

DirectX ist auch nur eine Ansammlung von Funktionen. Deshalb brauchst du das nicht so abschätzig hervorheben.

Zitat

Anders genug als dass man nicht ständig Probleme damit bekommt, wenn irgendwer irgendwo parallel ein Bind auf eine Textur ausführt.

Wenn es bei dir so häufig Fehler gibt, hast du vielleicht etwas nicht richtig verstanden?
Bei der richtigen Bedienung kommen jedenfals nicht mehr Fehler als in DirectX.



Mal nebenbei was mir an deiner Art zu diskutieren ehrlichgesagt generell negativ aufällt, sind die vielen aus der Luft gegriffenen und persönlich übertriebenen absoluten Aussagen.
Beispielsweise: "ständig Probleme", "grauenvolle Ansammlung", "hässliches OpenGL", ...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

63

12.07.2012, 15:09

Aber das ist ja wie gesagt eigentlich nicht das Schlimmste. Der Bind-Mist ist so fehleranfällig und hält mich von Parallelisierung ab, was wohl der Grund dafür sein wird, dass mein (wohl niemals kommendes) nächstes Projekt nicht mehr auf OpenGL basieren wird, so viel ich es auch über die letzten 10 Jahre verteidigt habe, aber irgendwo is Schluss mit lustig, da muss man auch mal mit der Zeit gehen und die zieht an OpenGL langsam aber sicher vorbei.


@Spiele Programmierer:
Das hat mit Pfeilen oder Punkten gar nichts zu tun. Ich kann in jeder OO-Sprache auf verschiedene Objekte parallel zugreifen und wenn die Architektur der Klassen vernünftig ist, dann sogar ohne Seiteneffekte. Das geht bei OpenGL nicht. Es geht nicht. Gar nicht. Ich kann ja nichtmal ein Objekt anfassen ohne mich selbst drum zu kümmern, dass das ursprüngliche hinterher wieder gesetzt ist. Ich müsste mir erst die aktuell gebundene Textur-ID erfragen, dann neu binden, meine Operationen machen und danach die alte wieder binden. Das ist doch völliger Unsinn.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

64

12.07.2012, 15:19

Was auch den größten Teil in OpenGL ausmacht.


Aber eben nicht jeden Teil!

Wenn du an einer Textur etwas umstellen willst, dann bindest du die halt vorher.
Ist das wirklich etwas so anderes, als wenn du hinter der Texturvariable einen Punkt\Pfeil hinmachst?
Das sind doch eindeutig nur ästehtische Gründe.


Ja, das ist ein großer Unterschied und nicht nur eine ästhetischer Sache. Ich habs oben ja schonmal geschrieben: Nachdem du die Textur gebunden hast, ist die Textur aktiv für alle weiteren Texturoperationen EGAL wo diese aufgerufen werden, solange bis eine andere Textur gebunden wurde. D.h. du musst dir vor dem Binden merken was für eine Textur gebunden war und diese schließlich zurücksetzen. Dann hättest du das selbe Verhalten wie ein äquivalenter Methodenaufruf in DX, nämlich das sich der globale Zustand nicht ändert! Und dieser zusätzliche Aufwand, zu dem man von OpenGL gezwungen wird, macht die API unschön und erhöht das Risiko für Fehler bei Verwendung der API. So ein Reset wird eben schnell mal vergessen und fällt vielleicht erstmal nicht auf. Aber irgendwann rächt sich das Ganze dann, im Idealfall an einer ganz anderen Stelle und dann gibts im Zweifel tagelange (!) Debugsessions.
@D13_Dreinig

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

65

12.07.2012, 15:21

Zitat

Ich kann in jeder OO-Sprache auf verschiedene Objekte parallel zugreifen

Wirklich parallel kannst du nur in ganz wenigen Libs zugreifen.
Die meisten sind nämlich nicht Threadsicher.
Und sequentiell kannst du auch in OpenGL zugreifen.
Du musst halt möglicherweise umbinden.

Und zu den Punkten\Pfeilen:
Auch DirectX wird im Prinzip folgendes machen:
-> An Grafikkarte: Jetzt kommt gleich was bezüglich Textur xxx
-> An Grafikkarte: Stelle bitte in der Textur X auf Y um



Zitat

Ich kann ja nichtmal e
in Objekt anfassen ohne mich selbst drum zu kümmern, dass das ursprüngliche hinterher wieder gesetzt ist.

Hm stimmt, das ist nicht so gut.
Hab mich darüber auch schonmal aufgeregt.
Ich habe das bisher so gelöst, dass ich konsequent den Zustand immer setze, wenn er unsicher ist.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Spiele Programmierer« (12.07.2012, 15:36)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

66

12.07.2012, 15:41

Ich habe das bisher so gelöst, dass ich konsequent dem Zustand immer setze, wenn er unsicher ist.

Ja, das ist wohl die beste Lösung. Allerdings bedeutet das, dass du an jedem Punkt in deinem Programm wissen musst, genau welche States unsicher sind. Mit anderen Worten: Aller Code, der nur irgendetwas rendert, ist potentiell von sämtlichem anderen Code, der etwas rendert, abhängig. Wenn du nur irgendwo in deinem Programm einen neuen State änderst, beeinflusst diese Änderung über den versteckten globalen Zustand potentiell jede andere Zeile in deinem Programm. In komplexeren Programmen wird das ganz schnell völlig undurchschaubar. Und wenn jetzt noch immer einer meint, dass das am Ende ja alles egal und rein nur eine Frage der Ästhetik ist (ich find Ästhetik übrigens sehr wichtig): Es gibt sogar einen eigenen Namen für diese Art von Problem...

Daher mal zusammengefasst: OpenGL funktioniert, ist rein was Features betrifft mittlerweile großteils up to date und ist auf vielen Plattformen sowieso die einzige Option. Die API ist imo trotzdem teilweise einfach grottig und bedarf schon seit mindestens 10 Jahren dringend einer Generalüberholung im Sinne von wegwerfen und neu machen...

Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von »dot« (12.07.2012, 16:09)


stef

Treue Seele

  • »stef« ist der Autor dieses Themas

Beiträge: 246

Wohnort: Kassel

Beruf: Softwareentwickler

  • Private Nachricht senden

67

12.07.2012, 18:43

Zitat

Daher mal zusammengefasst: OpenGL funktioniert, ist rein was Features betrifft mittlerweile großteils up to date und ist auf vielen Plattformen sowieso die einzige Option. Die API ist imo trotzdem teilweise einfach grottig und bedarf schon seit mindestens 10 Jahren dringend einer Generalüberholung im Sinne von wegwerfen und neu machen...

Ist doch ein schönes Schlußwort. Im übrigen bin ich überrascht wie sich das alles mit der Meinung des Meisters himself deckt ... (man beachte den zweiten und den letzten Absatz)

http://www.bit-tech.net/news/gaming/2011…-better-opengl/

Bei dem ganzen Gefecht ist mir eine Idee gekommen.
Wäre es nicht cool im Forum eine Ecke zu haben wo jeder seine Arbeiten als Executable hinstellen kann.
Dann könnten wir mal sehen was die einzelnen von uns so treiben.

P.S. Ab wieviel Posts bekommt man eigentlich des Satus "Treue Seele" ??? :D :D :D
"In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg." — Bjarne Stroustrup.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »stef« (12.07.2012, 18:57)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

68

12.07.2012, 20:19

Die Executables findet man doch in den Projekt-Bereichen oder auf den Homepages der Leute ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

69

12.07.2012, 23:18

Zitat

Ab wieviel Posts bekommt man eigentlich des Satus "Treue Seele" ???


Das hängt auch von der "Geschwindigkeit" deiner Posts ab.

stef

Treue Seele

  • »stef« ist der Autor dieses Themas

Beiträge: 246

Wohnort: Kassel

Beruf: Softwareentwickler

  • Private Nachricht senden

70

12.07.2012, 23:35

Zitat

Die Executables findet man doch in den Projekt-Bereichen oder auf den Homepages der Leute ;)

Ich meinte keine Projekte vorstellen sondern einfach nur die Möglichkeit haben was Ausfühbares schnell mal einzustellen.
Eine Demo-Sammlung so zu sagen. Abgesehen davon habe ich keine Hompage



Zitat

Das hängt auch von der "Geschwindigkeit" deiner Posts ab.

War eigentlich nur ein Witz.
Meinst du mit "Geschwindigkeit" ? Die Schlagzahl der Posts ?
Dann habe ich Pech und werde Dot wohl nicht mehr einholen. :D
(Bin schießlich berufstätiger Familienvater)
"In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg." — Bjarne Stroustrup.

Werbeanzeige