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
|
Verfasst am: 17.01.2006, 21:36 Titel: wie gemacht... |
|
|
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 |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 17.01.2006, 21:42 Titel: |
|
|
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 |
|
 |
RayJunx JLI'ler
Alter: 44 Anmeldedatum: 16.01.2006 Beiträge: 130 Wohnort: Bayern Medaillen: Keine
|
Verfasst am: 17.01.2006, 22:51 Titel: ok |
|
|
danke für die infos
dann werde ich da nicht einsteigen,
einmal kenn ich mich schon mit direct x wenig genug aus
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 |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 18.01.2006, 14:44 Titel: |
|
|
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 |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 18.01.2006, 16:19 Titel: |
|
|
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 |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 18.01.2006, 16:21 Titel: |
|
|
Wobei anzumerken ist, dass Jonathans Problem ja keineswegs ein API-Fehler ist, sondern lediglich von schlampig erzeugten/gespeichterten Grafiken kommt. |
|
Nach oben |
|
 |
RayJunx JLI'ler
Alter: 44 Anmeldedatum: 16.01.2006 Beiträge: 130 Wohnort: Bayern Medaillen: Keine
|
Verfasst am: 18.01.2006, 17:16 Titel: auch können will |
|
|
hey frechheit! ich will das auch können
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*
RayJunx _________________ Just a Freak |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 18.01.2006, 19:38 Titel: |
|
|
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 |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 18.01.2006, 19:42 Titel: |
|
|
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 |
|
 |
RayJunx JLI'ler
Alter: 44 Anmeldedatum: 16.01.2006 Beiträge: 130 Wohnort: Bayern Medaillen: Keine
|
Verfasst am: 18.01.2006, 19:50 Titel: buch |
|
|
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 |
|
 |
Jones Senior JLI'ler

Alter: 33 Anmeldedatum: 03.03.2005 Beiträge: 208 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 18.01.2006, 20:05 Titel: |
|
|
"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 |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 19.01.2006, 00:39 Titel: |
|
|
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.
Mach einfach mal los. Wenn es dann zu Problemen kommt, wird dir hier bestimmt geholfen.
EDIT: D3DXCreateTextureFromFileEx Problem (eventeuell ein abschreckende Beispiel, aber erspart dir vielleicht ne Menge Probieren ) |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 21.01.2006, 16:57 Titel: |
|
|
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 |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 21.01.2006, 17:00 Titel: |
|
|
Was für 'ne Graka, Treiber usw.? |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 21.01.2006, 18:09 Titel: |
|
|
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 |
|
 |
|