|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
njubee Mini JLI'ler
Anmeldedatum: 17.06.2006 Beiträge: 16
Medaillen: Keine
|
Verfasst am: 01.08.2006, 13:01 Titel: Tile-based 2D-Game: Besser Surface oder Texture |
|
|
2 Fragen:
1. Für ein 2D-Spiel mit einer Tile-based Map, benutze ich da besser Surface für die Tiles oder Sprites(Textures)?
2. Wie kann ich das mit der Transparenz lösen? Muss ich alle 24bit BMP in 32bit BMP's konvertieren? wenn ja, womit? (MS-Paint geht nicht ebenso Paint.net). Wie stelle ich da die Transparenz ein? Kann ich nicht sowas wie Colorkeys mit Surfaces benutzen? Mit LoadSpriteFromFileEx (o.ä.) gehts ja, aber mit Surfaces? |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 01.08.2006, 13:46 Titel: |
|
|
1. Hängt davon ab. Möglich ist prinzipiell beides, meinst du die DD-Surfaces? Beide Wege haben ihre Vor- und Nachteile. Mit den klassischen Surfaces wirst du auf Colorkeying zurückgreifen müssen, bei der Variante Vertices + Textur, hast du hardwarebeschleunigtes Alphablending/testing, Skalieren, Rotieren etc., was u.U. mit weniger Arbeit zu ansehnlicheren Ergebnissen führt, das hängt aber von deinen eigenen Ansprüchen ab.
2. Lässt sich auch schlecht so pauschal beantworten, wenn du irgendwelche Fix-und-Fertig-Lade-Routinen verwendest, musst du natürlich schauen, welche Formate unterstützt werden etc., und BMP 24Bit ist normalerweise ohne Alphachannel. Wenn du selber etwas schreibst, ist es natürlich dir überlassen, wie du die Bilddaten interpretierst. BMPs sind aber prinzipiell für Spiele eher ungeeignet. Ich kann dir TGAs oder PNGs empfehlen, welche auch Transparenzeffekte unterstützen. Für's Konvertieren kannst du eigentlich fast jedes Grafikprogramm verwenden - außer Paint eben. :P, GIMP verwende ich gerne. Unter OpenGL gibt's etwas, das nennt sich "Alphatesting", kann man die selben Ergebnisse wie mit Colorkeys erreichen, gibt es sicher auch unter D3D, vielleicht interessiert dich das ja... |
|
Nach oben |
|
|
njubee Mini JLI'ler
Anmeldedatum: 17.06.2006 Beiträge: 16
Medaillen: Keine
|
Verfasst am: 01.08.2006, 14:22 Titel: |
|
|
1. Aber mit Colorkeying ist es doch nur möglich, die transparenten Pixel auf schwarz zu setzen, oder? Ich hab's mal mit einem grauen Hintergrund probiert.
2. Als Anfänger benutze ich natürlich vorgefertigte Laderoutinen, da mir dazu sonst das Hintergrundwissen fehlt.
Das mit "Alphatesting" werde ich mal für D3D (ver-)suchen.
GIMP finde ich sch...lecht, aber wenn's den sein muss. |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 01.08.2006, 14:40 Titel: |
|
|
njubee hat Folgendes geschrieben: | 1. Aber mit Colorkeying ist es doch nur möglich, die transparenten Pixel auf schwarz zu setzen, oder? Ich hab's mal mit einem grauen Hintergrund probiert. |
Andersherum. Du wählst dir eine Farbe aus, die als Colorkey fungiert. Alle Pixel in dieser Farbe sind hinterher transparent(zu 100% - ein Zwischending wie beim Alphablending gibts bei Colorkeys nicht). _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
njubee Mini JLI'ler
Anmeldedatum: 17.06.2006 Beiträge: 16
Medaillen: Keine
|
Verfasst am: 01.08.2006, 16:41 Titel: |
|
|
Ich habe folgendes versucht: (Codeausschnitte)
1. Bildschirm grau:
Code: |
// Farbe die beim Loeschen verwendet werden soll
Direct3D.SetClearColor(D3DCOLOR_XRGB(100, 100, 100)); |
2. Magenta-Farbe als Colorkey:
Code: |
D3DXLoadSurfaceFromFile(m_lpSprites1, // Oberflaeche in die die Grafik geladen werden soll
NULL, // Palette
NULL, // Zielrechteck
FILE_SPRITES1, // Dateiname der Grafik
NULL, // Quellrechteck
D3DX_FILTER_NONE, // Filter
0xFFFF00FF, // Colorkey
NULL); |
Als Ergebnis hab ich ein Sprite auf grauem Hintergrund, bei dem die Magenta-Farbe durch schwarz ersetzt ist. Das meinte ich damit. Es steht auch so im Buch, das die Pixel eben schwarz sind und nicht transparent (in meinem Fall grau). Muss ich noch was machen (mit ALPHAirgendwas)?
Ich benutze ein 24bit-Bitmap. Muss ich 32bit verwenden, oder konvertiert DX das wenn ich bei CreateOffscreenPlainSurface() als Format D3DFMT_A8R8G8B8 angebe? |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 01.08.2006, 19:28 Titel: |
|
|
soweit ich weiß behandelt D3D den Colorkey als schwarze Farbe mit FF im Alphawert. Demnach müsstest du noch folgenden Renderstate fürs Rendern setzen:
CPP: | d3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE);
|
Nachm Rendern gegebenenfalls wieder auf FALSE zurücksetzen. Falls das net klappt, versuch mal diese beiden States noch zu übernehmen. DIe sind aber glaub ich eh standard und nur fürs richtige Alphablending gedacht. Aber, kann ja sein... CPP: | d3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
d3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); |
Gruß DXer |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 02.08.2006, 22:02 Titel: |
|
|
Ich würde als Bildformat tga empflehlen, falls du D3D benutzen möchtest.
BMP ist glaub ich nicht wirklcih für 32 Bit vorgesehen, tga schon. Außerdem ist es herrlich einfach zu laden und kann theoretisch eauch ein wenig kkomprimiert sein. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
|
|
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
|