Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
JkerryZ JLI Master Trainee

Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 22.06.2004, 16:27 Titel: |
|
|
Also ich habe einen ColorKey für die Sprites gefunden, aber wenn irgendwie macht der keine veränderung, ausser wenn ich den Wert auf 0xffffffff setze sind gar keine Sprites mehr zu sehen.
Was mich nur wundert ist, dass alle anderen nicht veränderten Sprites funktionieren und wenn ich die Hintergrundfarbe bei meinem genauso mache wird es trotzdem angezeigt.
was mache ich da noch falsch?
Oder ich nehme doch das Makro "D3DCOLOR_XRGB(0,0,0)".
Aber in welche der Quellcode Dateien muss ich das reinsetzen und an welche Stelle?
Vielen Dank,
JkerryZ
[Edit] Nach einer Menge Überlegungen und Versuchen ist es mir nun gelungen ein "nach oben Scrolling" einzubauen. Ohne hin und her scrollen, denn das kann ich in diesem Programm nicht gebrauchen.
Doch Leider verwischt alles nach einem Durchlauf der Bitmap alles total, woran liegt das?
[/Edit] |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 22.06.2004, 19:08 Titel: |
|
|
Die Fragen kann man nur sehr schwer beantworten, wenn man keinen Quellcode hat. Poste dhc bitte mal den Teil, indem du die Spritetexturen läds und den wo du das Sprite renderst. Ebenso solltest du mal die Scrolling funktion posten, falls du willst, das wir dir helfen. Den ich glaube kaum, das ohne Quellcode jemand deien Fehlr errät. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
JkerryZ JLI Master Trainee

Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 22.06.2004, 20:07 Titel: |
|
|
Ok, dann poste ich mal den Quellcode.
Hier der Quellcode der Scrolling funktion:
Code: | void CDirect3D::BeginScene(void)
{
m_lpD3DDevice->BeginScene();
// aktuellen Bereich in den Backbuffer kopieren
m_lpD3DDevice->StretchRect(m_lpSurface,
&m_ScrollRect,
m_lpBackBuffer,
0,
D3DTEXF_NONE);
m_ScrollRect.bottom -= m_ScrollDirection;
// Wenn wir am Anfang oder am Ende der Oberfläche
// angekommen sind, wird die Scrollrichtung umgekehrt
if(m_ScrollRect.bottom == 768 || m_ScrollRect.bottom == 0)
{
m_ScrollDirection = -m_ScrollDirection;
} |
Hier der Code wo die Sprite kreiert und die Texturen geladen werden:
Code: | // Sprite kreiern
void CSprite::Create(LPDIRECT3DDEVICE9 lpDevice,CResourceManager* ResManager,float AnimationSpeed)
{
m_lpDevice = lpDevice;
m_ResManager = ResManager;
m_AnimationSpeed = AnimationSpeed;
D3DXCreateSprite(m_lpDevice, &m_lpSprite);
m_vScale = D3DXVECTOR2(1.0f,1.0f);
m_StepX = 10.0f;
m_StepY = 10.0f;
}
// Textur für das Sprite festlegen
void CSprite::AddTexture(LPDIRECT3DTEXTURE9 lpTexture)
{
// Beschreibung des zu Grunde liegenden Surfaces
D3DSURFACE_DESC desc;
lpTexture->GetLevelDesc(0,&desc);
// Breite und Höhe speichern
m_Width = desc.Width;
m_Height = desc.Height;
m_vRotationCenter = D3DXVECTOR2((float)m_Width/2, (float)m_Height/2);
// Zeiger auf die Textur speichern
m_AnimationVec.push_back(lpTexture);
}
// Bewegung des Sprite in Abhängigkeit der Direction
void CSprite::Move(int Direction)
{
int Framerate = m_ResManager->GetFramerate();
|
Und hier müsste doch der Alpha-Kanal festgelegt werden im vorletzten Parameter:
Code: | // Oberfläche in Datei speichern
D3DXSaveSurfaceToFile(Filename,D3DXIFF_BMP,
lpSurface,0,NULL);
|
mfg JkerryZ |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 22.06.2004, 20:38 Titel: |
|
|
Beim scrollen müssen top und bottom geöändert werden, da sonst das Viereck entweder immer größer oder immer kleiner wird und somit verzerrt wird. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 22.06.2004, 20:42 Titel: |
|
|
Warum brauchst du einen Alphakanal, wenn du eine Oberfläche als bmp speicherst? Ich dachte du wolltest das mit Alphablending auf den bildschrimrendern und nicht in eine Datei schreiben. Zum rendern mit Alphablending fehl auch der folgende Code:
CreateTextureFromFileEX() bei der man den Alphakanal festlegen kann
und XSprite->Draw() wo man Modulatecolor angeben kann und somit das Sprite komplett transparent zeichnen kann. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
JkerryZ JLI Master Trainee

Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 22.06.2004, 21:30 Titel: |
|
|
Was ist das Problem mit der bmp Datei?
Und das Problem ist, dass der Hintergrund mit zu sehen ist und das sieht blöd aus, und das will ich machen, dass der nicht mit angezeigt wird, aber ich weiss nicht genau, wo ich das einstellen soll.
Vielen Dank.
JkerryZ |
|
Nach oben |
|
 |
JkerryZ JLI Master Trainee

Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 22.06.2004, 21:36 Titel: |
|
|
Und beim Scrolling, welches bottom und top muss ich ändern??
Wenn ich alle austausche steht das Bild ganz still. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 23.06.2004, 14:05 Titel: |
|
|
Zum scrollen: Ich gehen jetzt einfach mal davon aus, das du Oberfläche hast. Einmal den Bildschirm und einmal eine wesentlich größere, von der immer ein anderer Teil auf dfen Bildschrim kopiert werden soll. Beim kopieren von Oberflöchen gibt man 2 Rechtekce an. Einmal das Ziel und einmal das Quellrechteck. Wenn du NULL übergibts wir AFAIK jeweils die komplette Oberfläche kopiert. Asl Quellrecxhteck muss also eigentlich immer so groß sein wie das Zeilrechteck, wenn du nicht woillst, das das Bidl verzerrt wird.Scrollen könntest du dann so realisieren:
Zieloberflaäche: 1024*768
Quelloberfläche: 1024*(768*3)//3 Bildschrime hoch
DestRect.top=0
DestRect.Bottom=768
DestRect.left=0
DestRect.right=1024
SourceRect.top=ScrollY;
SourceRecr.left=0;
SorceRect.right=DestRect.Right;
SourceRect.bottom=DestRect.Bottom+ScrollY;
Wenn du jetzt Scroll Y änderst, hast du immer den korrekten Bildauschnitt auf dem Bildschirm. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 23.06.2004, 14:07 Titel: |
|
|
Um die XSprite nutzen zu könne must du eine Textur anlegen. Das solltest du mit CreateTextureFromFileEx() machen und nicht mit CreateTextjreFromFile(), da du dann einen Colorkey beim laden der Textur angeben kannst. Als Colorkeyfarbe nimmst du logischerweise die Hintergrundfarbe deines Sprites. Lies dir am besten das entsprechende Kapitel aus dem Buch durch, ich weiß das auch alles nur daher. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
JkerryZ JLI Master Trainee

Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 23.06.2004, 15:38 Titel: |
|
|
Danke erstmal für deine Antwort.
Also, das Scrolling zieht irgendwie die Textur lang und dann wieder zusammen. und warum funktioniert das vor allem seitwärts ohne Probleme?
Und wenn ich das hier einsetze:
SourceRect.top=ScrollY;
SourceRecr.left=0;
SorceRect.right=DestRect.Right;
SourceRect.bottom=DestRect.Bottom+ScrollY;
direkt unter
DestRect.top=0
DestRect.Bottom=768
DestRect.left=0
DestRect.right=1024
dann mault der rum, dass SourceRect nicht Deklariert ist. In welcher funktion muss ich das deklarieren?
Und das mit dem Sprite muss ich jetzt nochmal probieren.
Und vielen Dank nochmal für die Hilfe. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 23.06.2004, 15:44 Titel: |
|
|
in genau der, i der du den Blitvorgang aufrufst. Das ist ein kleiner Pseudocode den du entsprechend anpassen must. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
JkerryZ JLI Master Trainee

Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 24.06.2004, 20:48 Titel: |
|
|
Na gut, ich werde das jetzt noch ein bisschen alles ausprobieren. Und falls ich es doch nicht hinbekomme melde ich mich nochmal. |
|
Nach oben |
|
 |
|