JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Flaschenhals der Direct X Performance
Gehe zu Seite Zurück  1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
RayJunx
JLI'ler


Alter: 44
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 17.01.2006, 21:36    Titel: wie gemacht... Antworten mit Zitat

So und wie handhabe ich DirectDraw Surfaces
gibts dazu irgendwo beispielcodes?
bücher?
irgend jemanden der sich damit auskennt?
kann doch auch nicht so viel schwerer sein, zumindest bräuchte ich
ja nur die gekapselte klasse. ich müß nur sagen können
die *.png textur laden, und auf der und der position auf dem
bildschirm darstellen. rotationsmittelpunkt bestimmen, rotations
faktor bei bedarf, zugriff auf die pixel irgendwie zur kollisionserkennung
und natürlich maping mit alhpakanalberückshictigung.
das wärs. ist das mit directdraw surfaces so schwer?

Rayjunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 17.01.2006, 21:42    Titel: Antworten mit Zitat

Uffta.

"Schwer" nicht wirklich. "Umständlich" triffts eher.


Dir sollte im Vornherein klar sein, dass DD eine völlig andere API ist, als D3D, zudem wird DD seit DX7 nicht mehr weiterentwickelt. Sowie ich deinen Kenntnisstand einschätze und berücksichtige, dass du deine Sprites ja rotieren und transparent machen willst etc., würde ich dir von DD an dieser Stelle eher abraten und D3D bzw. OGL ans Herz legen.

Wenn du es dennoch versuchen willst, so bietet dir die MSDN als erste Anlaufstelle erstmal eine recht brauchbare Doku inklusive Tutorials.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
RayJunx
JLI'ler


Alter: 44
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 17.01.2006, 22:51    Titel: ok Antworten mit Zitat

danke für die infos
dann werde ich da nicht einsteigen,
einmal kenn ich mich schon mit direct x wenig genug aus Wink
zweitens hab ich nicht vor nochmal in einen absteigenden ast einzusteigen wenn es nicht weiterentwickelt wird.
die performance reicht mir auch so vollkommen.
2000 objekte bei einem auf frame basierenden 2d spiel reichen
vollkommen. das ist ein haufen zeug.

gruß
Rayjunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 18.01.2006, 14:44    Titel: Antworten mit Zitat

Also, ich habe für mein aktuelles Projekt auch erst DirectDraw genommen, bin dann aber auf Direct3D umsgestiegen, ganze ienfach wegen der Transparenz. Besonders bei realistisch wirkenden Srpties, die gerendert wurden, sehen und DirectDraw mit Colorkey einfach schlecht aus, weil die Ränder sehr unsauber sind. Das liegt daran das die Bilder leicht in den Hintergrund übergehen. Diese Stellen hatten dann eben nicht genau Colorkey Farbe, und deshalb hatten alle sprites einen roten Rand, was schlecht aussah.
Nachbearbeiten ging nicht wirklich gut, deshalb wollte ich Bereichcollorkey machen, um viele Rottöne abzudecken. Das war umständlich zu programmeiren, da meine Grafikkarte das gar nciht unterstützt, also musste ich das biem Ladne vom Bild machen.
Dann bin ich auf D3D umgestiegen, dort hab ich Alphablending aktiviert und schon hatte ich dank Alphachannel perfekte Übergänge.
Außerdem kann man mit Transparenz viele schöne Effekte wie Explosionen machen, und das beleibige drehen und skalieren ist auch recht praktisch.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 18.01.2006, 16:19    Titel: Antworten mit Zitat

Jo und wenn man des alles noch als Texturen macht die auf
Vierecken gerendert werden geht es noch schneller und du kannst
genau so gut skalieren(Z Achse),drehen und den Alpha kanal benutzen
und ist nicht wirklich schwieiger. Was noch als Plus zu verzeichen ist ist
das du es Viel einfacher mit beleuchtungen hast.
Das werd ich auch in meinem nächsten 2d spiel verwenden..
_________________
Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 18.01.2006, 16:21    Titel: Antworten mit Zitat

Wobei anzumerken ist, dass Jonathans Problem ja keineswegs ein API-Fehler ist, sondern lediglich von schlampig erzeugten/gespeichterten Grafiken kommt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
RayJunx
JLI'ler


Alter: 44
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 18.01.2006, 17:16    Titel: auch können will Antworten mit Zitat

hey frechheit! ich will das auch können Wink
Texturen mit Direct3D auf Würfel kleben und die dann anstelle meiner Sprites nur mit mehr Performance verwenden.
Hab praktisch keine ahnung bis auf das ich halt im groben die funktionsweiße oder besser gesagt die ANWENDUNG des codes aus dem Buch dieser seite verstehe. aber nichts weiteres. ist es denn ein rießen akt? oder kann ich mir
genauso wie bisher mit den draw funktionen, einfach eine klasse für direct3d textur würfel aufstellen. gleiches spiel. nur eben schnella
man das wär mir gold wert

bitte um hilfe *fleh fleh* Wink

RayJunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 18.01.2006, 19:38    Titel: Antworten mit Zitat

Ruhig!!
Erstmal warum Würfel??
Du brauchst(solang du es nicht optiemierst indem du
mehrere Sprites zusammenfast(aufwendig))pro Sprite ein Rechtecke
das söllte mit der Renderseite zum Spieler zeigen.
die Texturkordinaten machst du dann einfach so.
1.tx = 0
1.ty = 0
2.tx = 1
2.ty = 0
3.tx = 0
3.ty = 1
4.tx = 1
4.ty = 1
1. links oben
2. rechts oben
3. links unten
4. rechst unten
und tust du als textur einfach deine Sprite Texture verwenden asl Texture verwenden.
Dann musste du alle Sachen die zu 3d dazugehören berücksichtigen.
Des heißt die ganzen RenderState(steht im Buch zweiten JLI Buch drinnen)
_________________
Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 18.01.2006, 19:42    Titel: Antworten mit Zitat

naja, für Anfang sind doch D3DXSprites ganz ok. Wo stelst du den 2000 Objekte in 2D auf einem Bildshcirm da?
Wenn die Levels halt sehr groß sind, musste halt darauf achtne, das nur das angezeigt wird, was wirklich am Bildshcirm ist, und dann sollte das doch auch erstmal reichen. Wenn du 30-40 Frames hast, ist das doch zum spielen ganz ok.

Natürlich ist es kein API Fehler ich wollte nur duetlcih machen, das ColorKey kein gleichwertiger Ersatz für Alphablending ist.
Und selbst wenn die Grafiken extra auf Colorkeying ausgelegt wären, würde man doch warhscheinlich noch deutliche Übergägne sehen, mit D3D kannste ja auch noch Filter und Antialliasing einstellen, was das noch etwas netter macht, auch wenns dann bissle langsamer wird.
Und sobald du beleuchtung machen willst, sind Lightmaps unter D3D einfach hundert mal besser als DirectDraw. bei älteren Spielen sieht man ncoh, das der Schatetn pixelig ist, also bloß jeder zwiete Pixel grau, die andern Originalfarbe. Mit D3D kannste das viel schönder machen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
RayJunx
JLI'ler


Alter: 44
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 18.01.2006, 19:50    Titel: buch Antworten mit Zitat

ist DirectX 9 und Visual C++
daskomplette starterkit für...
das erste buch?
und wie heißt den das zweite buch? dann such ich mir das mal raus
danke für den tip soweit mal
gruß
rayjunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jones
Senior JLI'ler


Alter: 33
Anmeldedatum: 03.03.2005
Beiträge: 208
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 18.01.2006, 20:05    Titel: Antworten mit Zitat

"Jetzt lerne ich DirectX 9 und Visual C++
Das komplette Staterkit für den..." ist die überarbeitete Neuauflage vom vorherigen buch
http://www.mut.de/3827264545.html?SID={33ED8277-B588-42F9-8D67-0A67A65EAAC2}&TOKEN={5D41222B-75B0-41A5-A558-7795A13D97B2}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 19.01.2006, 00:39    Titel: Antworten mit Zitat

Zum Thema 2D-Objekte mit Direct3D darstellen.
Das hat auch seine Nachteile und nicht nur Vorteile.

Sei es per D3DXSprite oder per "manuell" angeordneten Vertizes mit draufgelegter Textur, ist es für Anfänger etwas kniffelig eine 1 zu 1 Abblidung der Textur auf den Bildschirm zu bekommen.

Erstmal müssen die Maße der Textur eine Potenz von 2 sein, was einem bei der Entwicklung von 2D-Spielen einiges Kopfzerbrechen bescheren kann. ( Angenommen du hast ein Bild mit der Höhe von 100 Pixeln und der Breite von 20 Pixeln. Jetzt musst den Rand des Bildes quasi erweitern, damit daraus ein 128x32 Textur wird. Das muss man jetzt allerdings beim Mapping der Textur berücksichtigen.... Ich will das jetzt nicht so breit erklären, aber ich denkne man kann es sich vorstellen)

Je nachdem welchen Texturfilter man benutzt, muss man bei den Texturkoordinaten aufpassen.

Ich wollte dich jetzt nicht abschrecken. Wink
Mach einfach mal los. Wenn es dann zu Problemen kommt, wird dir hier bestimmt geholfen. Wink

EDIT: D3DXCreateTextureFromFileEx Problem (eventeuell ein abschreckende Beispiel, aber erspart dir vielleicht ne Menge Probieren Wink)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 21.01.2006, 16:57    Titel: Antworten mit Zitat

Ich hab da ich grad eh an einer Sprite Klasse arbeite hab ich mal
was ausprobiert und bin zu dem erstaunlichem Ergebniss gekommen.
Das wenn ich gar nichts render nur die Funtkionen LPD3DDEVICE9::Clear
LPD3DDEVICE9::BeginRender LPD3DDEVICE9::EndRender LPD3DDEVICE9::Present aufrufe hab ich eine Framerate von 72 auf einem älteren PC. Wenn ich diese aber weglasse komm ich auf eine Framerate 7400
gibt es eine Möglichkeit diese Funktionen ersetzten(im nicht alzu großem rahmen) oder diese zu verschnellern??
_________________
Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 21.01.2006, 17:00    Titel: Antworten mit Zitat

Was für 'ne Graka, Treiber usw.?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 21.01.2006, 18:09    Titel: Antworten mit Zitat

Die DirectX Funktionen zu verändern dürfte wohl ziemllich kniffelig sein.
evtl. könnte man sich durch vererbugn ersatzfunktionen schreiben, aber selbst dann wird es wohl so gut wie unmöglich sein die zu optimieren da die normalerweise ja nichts unnötiges machen und von Haus aus optimeirt sind.
Wenn du diese Aufrufe wegnimmst, haste ja quasi nur noch ne leere
Schleife und da isses ja klar das du sehr viele Frames hast.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3  Weiter
Seite 2 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum