Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 12:22

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 30 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Zwei Fragen zur Grafik und API
BeitragVerfasst: Do Mai 27, 2004 15:41 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mai 27, 2004 15:22
Beiträge: 25
Wohnort: Stuttgart
Hi Leute !

Hoffe Ihr könnt mir Helfen!

1.)
Welche API würdet Ihr empfehlen, da ich eigentlich nur 2D brauche

Ich "würde" (irgenwann muss man ja mal anfangen um was zu lernen) ein Game proggen das eigentlich nur Bilder anzeigt.
Vielleicht kennt jemand Oldtimer von MaxDesign noch.

Was man für das GAME (ISO-Perspektive) bräuchte:
- Eine Übersichtskarte die gescrollt wird (mit ein paar kleinen Animationen drauf)
- Und einige Bilder die die Räume darstellen wo auch nur einige kleinere Animamtionen dargestellt werden.

Ich dachte da halt an DelphiX *in Deckung geh* ?!

Bei OpenGL dachte ich da, man würde mit Kanonen auf Spatzen schiessen - oder doch nicht ?

Bei DirectX bin ich eigentlich nicht so gut gesinnt da ich vor einiger Zeit mal wieder Need for Speed 3 (von 1997) spielen wollte auf WinXP Pro mit DirectX 9 und was macht der Sche***. "Sound konnte nicht initialisiert werden. Und mir kackt der Mist ab. Sowas sollte bei Spielen eigentlich nicht passieren.

2.)
Unter Cinema4D (da bin ich geübter als unter Delphi) versuchte ich ein paar Test's von Modellen zu entwerfen.
Als Hintergrund hab ich 255,0,255 (RGB) genommen. Das gerendert Bild (BMP-Format Wie gesagt nur ein Test) hab ich mittels DelphiX geladen und auch angezeigt.
Jedoch rund um das Modell (hier mal ein simpler Stuhl) sind noch "Reste" der Farbe 255,0,255. Zwar nur wenige Pixel jedoch noch Eindeutig sichtbar.

Ich weiß das es mit dem Antialiasing zusammen. Aber wie bekommen man die Pixel weg?

Danke im voraus !


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 15:57 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Zu 1.)

Also IMHO verwendet MS DirectX ab Version 8+ nur noch 3D und schaltet in den Otrho-Modus für 2D. Das gleiche kannst Du auch mit OpenGL machen. Und es wäre NICHT mit Kanonen auf Spatzen geschossen da du die volle Harware-Untestützung für Scaling, Color-Masking, alpha-Blending etc. hast. Demzufolge eigent sich OpenGL also recht gut für 2D. Such einfach mal im Forum danach. Es gibt den ein oder anderen Thread dafür!

zu 2.) Der "Stuhl" als Beispiel ist leider nicht sichtbar. Aber ich vermute, dass durch Antialising keine "reinen" Grauwerte um die Objekte herum existieren. Wenn du nun also deinen Grau-Wert filtern lassen willst, aber um das Objekt das Grau z.B. dunkler wird entspricht das nicht mehr deiner gewünschten, herauszufilternden Farbe und wird somit dargestellt. Falls Deine Frage damit nicht beantwortet ist, zeig einfach mal 'nen Screenshot mit einem Beispiel!

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 16:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Dann mal gleich zu deinen Fragen.

1: Das ist natürlich deine Entscheidung. Da können wir dir auch nur Vorschläge machen. Und da du die Frage in einem OpenGL Forum stellst sollte die Antwort klar sein. ;-)

Nein mal im Ernst. Für eine reine 2D Anwendung ist OpenGL genau so wenig überdimensioniert wie auch DirectDraw. Es spielt keine Rolle was du verwendest. Ich würde aber immer direkt zu einer API greifen. Also entweder OpenGL oder DirectDraw. Allerding muss ich gestehen, dass DirectDraw für meinen Geschmack ein wenig zu umständlich ist. Also in der Initialisierung finde ich es etwas konfus und auch die Tatsache, dass der Funktionsumfang fest mit einer Schnittstelle verdrahtet ist gefällt mir persönlich nicht. Also ich würde dir klar zu OpenGL raten. Allerdings ist das deine Entscheidung.

2: Wie du bereits festgestellt hast liegt das Problem an der Glättung von dem 3D Programm. Entweder du findest eine Mögklichkeit diese Glättung auszustellen oder du musst die Bilder noch mal per Hand nachbearbeiten und damit den Rand abschneiden. Das wäre jetzt das was mir spontan dazu einfallen würde.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 16:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mai 27, 2004 15:22
Beiträge: 25
Wohnort: Stuttgart
Hi !

@SchodMC:

Hier mal 2 Screenshots zur Verdeutlichung.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 16:47 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Das liegt an deinem 3D-Programm. Bei 3DSMax ist das auch so, und da muss man dann in den Renderoptionen die Kantenglättung abschalten, denn sonst hat man logischerweise an den Objekträndern solche Farbübergänge die später dann natürlich sichtbar sind. Mit Sicherheit kann man das auch in Cinema4D ausschalten.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 16:51 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Ohne viel näher drauf einzugehen. Nimmst Du JPG? Evtl. sind das einfach Artifakte. Verwende lieber einmal in dem Zusammenhang ein verlustfreies Format wie PNG oder TGA.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 16:54 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mai 27, 2004 15:22
Beiträge: 25
Wohnort: Stuttgart
Nachtrag...

@Lossy eX:

Hier ein Shot ohne Glättung. Das wär ne Lösung aber das sieht ohne Glättung bei vielen Objekten nicht mehr so gut aus (wenn man ein grosses objekt hat).

Gibt es nicht ne Lösung wo man die Bilder in ne Imagelist (oder ähnliches) lädt und man die Transparent mit einer Tolleranz "vesieht"

Z.b. Farbwert 255,0,255 mit Toleranz 20% Abweichung ist Transparent. Müsste oder sollte doch sowas geben...

mfg
Kathmai


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 16:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mai 27, 2004 15:22
Beiträge: 25
Wohnort: Stuttgart
Zitat:
Ohne viel näher drauf einzugehen. Nimmst Du JPG? Evtl. sind das einfach Artifakte. Verwende lieber einmal in dem Zusammenhang ein verlustfreies Format wie PNG oder TGA.


Nein, in den Tests ist das Format BMP


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 17:14 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also um das zu Realisieren was du möchtest musst du einen seperaten Alphakanal mit im Bild speichern. Dafür bietet sich TGA an. Oder ein Loader der Bild und Alpha miteinander verbindet. Allerdings ist TGA sinnvoller. Weil einfacher, schneller und kleiner.

Diese Tolleranz zu einem bestimmten Farbwert kannst du vergessen. Das klappt so einfach nicht.

Um diesen weichen Rand in deiner Anwendung zu ermöglichen musst du den Alphakanal in einem Grafikprogram weich machen. Eine andere Möglichkeit wirst du dabei nicht haben. Eine Möglichkeit wäre Photoshop. Dort schneidest du dann die transparent Farbe weg. Bild muss dabei eine normale Ebene sein (Hintergrund dublizieren und dann Hintergrund löschen). Dann machst du mittels Weichzeichner die Ebene am Rand etwas weicher und somit wird es am Rand etwas transparenter. Dann abspeichern als 32Bit Tga und fertig sollte es sein.

In deinem Programm muss dann dementsprechend Blending aktivieren.

Wie das mit anderen Programmen aussieht kann ich dir nicht sagen. Musst du selber sehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 18:14 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Hallo!

Zu deiner Frage bezüglich der API: Ich habe es bis vor kurzem genau so empfunden (mit Kanonen auf Spatzen schießen). Aber:
- DirectDraw gibt es seit DirectX 8 tatsächlich nicht mehr. Das DD von DX7 wird zwar weiterhin unterstützt hat aber empfindliche Nachteile gegenüber einer "3D"-Lösung (keine hardwarebeschleunigten Alphakanäle, Blending etc.)
- OpenGL ist einfacher und "handlicher" als DirectXGraphics (der neue Name von Direct3D). Welche der beiden Libraries du verwendest, ist eigentlich wurscht. Wenn du in diesem Forum fragst welche du nehmen sollst, kannst du dir die Antwort aber wohl schon denken...

Im Grunde gibt es drei Möglichkeiten für 2D-Grafik:
- GDI (also normale Windows-Zeichenfunktionen), z.B. Graphics32: Zu langsam, da Windows nie für Spiele ausgelegt war.
- DirectDraw (veraltet), z.B. DelphiX: Beschleunigt nur das Zeichnen von Grafiken, Schnittstelle ist hundsmiserabel dokumentiert und teilweise auch alles andere als ideal programmiert.
- 3D (OpenGL / DirectXGraphics): Einziger Nachteil ist, dass eine einigermaßen aktuelle 3D-Grafikkarte benötigt wird (TNT oder neuer). Ansonsten hast du gigantische Vorteile, nämlich dass du alles machen kannst und das auch noch extrem schnell, also z.B. Blendeffekte, Alphakanäle etc.

Du kannst dir in dem Zusammenhang auch mal noch einen anderen Thread durchlesen, der zur Entscheidungsfindung bei mir damals geholfen hat:
viewtopic.php?t=2722

Gruß,
Arno


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 18:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mai 27, 2004 15:22
Beiträge: 25
Wohnort: Stuttgart
Hi!

Danke erstmal für Eure Antworten.
Ich bin schon von OpenGL und seinen Möglichkeiten überzeugt und von Bibliotheken wie Graphics32 - naja... Schwamm drüber.

Zitat:
Du kannst dir in dem Zusammenhang auch mal noch einen anderen Thread durchlesen, der zur Entscheidungsfindung bei mir damals geholfen hat:
viewtopic.php?t=2722


Danke ! Den Thread hatte ich schon gefunden über die Forum suche.

Ich programmiere zwar in Delphi schon einige Jahre doch in Sachen Grafik (bzw. Spieleprogrammierung) zusammengenommen (bei einem 8 Stunden Tag) etwa Erfahung von vieleicht 3 Tagen.
Deshalb bin ich halt auch abgeschreckt von den Funktionsumfang von OpenGL weil ich auch wie in Deinem Thread von Begriffen wie z.b. FSAA und anderen genauso viel Ahnung hab wie meine Oma von Pointern oder HyperNurbs. Ich weiß, Übung macht den Meister. Aber auch die Tutorials hier bei delphigl.com sind zwar gut aber zielen dennoch immer auf die Dritte Dimension ab - ohne spezifisch auf 2D einzugehen - Schade eigentlich. Anfänger wie ich möchten halt gern an die "Hand" genommen werden und an konkreten Beispielen (wohlgemerkt für 2D - nicht jeder fängt mit dem proggen eines Quake Clones an oder 3d PacMan Clone) erklärt haben wollen wie was funktioniert ohne das in einem Forum (Thread) nach zu lesen wo nur mit Fachbegriffen um sich geworfen wird ohne auf diese einzugehen (muss man auch nicht wenn danach nicht gefragt wird).

Siehe auch aktuelle Umfrage auf der Seite.

Es wäre schön wenn es demnähst solche Tutorials geben würde. Ansonsten bleibt nur googeln :-(

cya
Kathmai


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 27, 2004 23:03 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Es wurde schonmal vorgeschlagen, dass mal jemand ein Tut über den Orthomodus schreibt. Da aber das Gebiet recht überschaubar ist, wurde darauf verzichtet.

Eventuell könnte ja mal ein begabter Tutorialschreiber sowas wie ein "1 Level Monkey Island"-Clone schreiben, in dem dann der Orthomodus, verschiedene Selectionmethoden, einfache Animationen (dass die Hauptperson von a nach b "läuft") und ähnliches erklärt wird.

So gesehen is das sogar ne recht nette Idee. Ich hab allerdings momentan überhaupt keine Zeit. Vielleicht findet sich ja jemand der sowas mal schreibt. Schätze das könnte den allmonatlichen 2D-Anfängern helfen. (ja du bist nicht der Einzige :wink: )

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 28, 2004 00:18 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Das ist nicht ganz korrekt. Ein 2D-Tutorial steht bei mir auf jeden Fall noch auf der Liste und es wird auch definitiv noch eines geben. Allerdings erst wenn ich mit der Ausbildung komplett rum bin. ;)

Was die Fremdwörter angeht, in der Tat. Googlen oder eben, wenn in einem Zusammenhang etwas nicht verstanden wird, nachfragen. Auch wenn der Eindruck nicht da ist, die meiten können auch ohne diese Begriff hantieren ;)

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 28, 2004 00:33 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Hm, eine gute Idee wär's jedenfalls. Wer weiß, vielleicht setze ich mich mal hin. Um mit OpenGL eine einfache 2D-Anwendung zu schreiben braucht's nicht viel Wissen. Um das Redbook kommt man letztlich aber dann doch nicht rum, sonst gibt's zuviele Verständnisprobleme an diversen Ecken. Nun ja...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 28, 2004 11:19 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Meines Wissens stellt die SDL Bibliothek bereits in der Standardausführung eine komplette API für 2D-Grafiken zur Verfügung und kann später mit der OpenGL Version leicht erweitert werden.
Selbst arbeite ich aber nicht mit SDL und würde dir eigentlich auch raten, direkt mit OpenGL einzusteigen, das so kompliziert nun auch wieder nicht ist - insbesondere als du dich ja am Anfang nur auf die Teile konzentrieren musst, die du für die Darstellung deiner Grafiken tatsächlich brauchst.
Falls du aber einen schnellen Einstieg suchst, bist du eventuell mit SDL gar nicht so schlecht bedient, da hier Sounds auch gleich mit verwaltet werden.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 30 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.011s | 16 Queries | GZIP : On ]