Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

shuffel

Frischling

  • »shuffel« ist der Autor dieses Themas

Beiträge: 13

Wohnort: Bochum

Beruf: Programmierer

  • Private Nachricht senden

1

31.05.2004, 00:58

Problem mit tbGUIImage

Hallo zusammen

Ich habe das gleiche Problem wie ein "Klaus" der schonmal Anfang des Jahres nachfragte und bis jetzt noch keine Antwort bekommen hat.
Alle Images die ich anzeigen möchte erscheinen als weiße Rechtecke.Beim ersten starten der Klasse sieht man ganz kurz das Bitmap und dann ist es verschwunden.Das seltsame an dieser Sache ist noch das das eine Bitmap auf allen Images erscheint.

Kennt jemand dieses Problem oder hatte es jemand mittlerweile noch ???

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

2

31.05.2004, 01:33

Re: Problem mit tbGUIImage

Mein aktueller Stand ist, dass ich noch immer keine Lösung gefunden habe .. :rolleyes:
Es blieb mir nur, auf das GUIImage zu verzichten, und mir das Bild selbst mit einem texturierten Rechteck zu zeichnen, aber das ist ja eigentlich nicht der Sinn einer Engine xD
Mozilla Firefox
The Browser - reloaded

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

3

31.05.2004, 01:41

hmm weiße Rechtecke?

Hm dann könnte es sein, das Texturen nicht aktiviert sind, Wenn du nur ganz kurz am Anfang die Textur gesehen hast, könnte es sein, das irgendwo in deinem Programm Texturen deaktiviert wurden und nicht bei tbGUIImage reaktiviert wurden sondern erst nach dem renderen des Rechtecks, drum ist es sehr warscheinlich Matt ohne Textur.

Kann mich auch irren, aber für mich müffelt das nach vergammeltem Fis... äääh nach deaktivierten Texturen.

shuffel

Frischling

  • »shuffel« ist der Autor dieses Themas

Beiträge: 13

Wohnort: Bochum

Beruf: Programmierer

  • Private Nachricht senden

4

31.05.2004, 11:20

Was heißt deaktivierte Texturen ???
Kann mich nicht daran erinnern irgendwelche Texturen deaktiviert zu haben.
Aber ist ja alles möglich.
Deshalb meine Frage, wie deaktiviert man Texturen ??

5

01.06.2004, 16:19

Es gibt doch diese Funktion
lpD3DDevice->SetTexture(0, lpTexture);
Wenn man die vorm Rendern nicht aufruft, werden alle Textureireten Dreiecke nur weiß gemalt (habs oft genug vergessen). Wenn man jetzt, z. B. statt lpTexture einfach NULL übergibt, hat man quasi keine Textur ausgewählt, und alles wird weiß.
Man deaktiviert also nicht die Textur, sondern sagt Direct3D, das es keine verwenden soll (weil der Zeiger ja ungültig ist)

shuffel

Frischling

  • »shuffel« ist der Autor dieses Themas

Beiträge: 13

Wohnort: Bochum

Beruf: Programmierer

  • Private Nachricht senden

6

02.06.2004, 09:19

Dann liegt das Problem ja in der Klasse.Ich deaktiviere ja nichts in dem Sinne.Ich lass ja den gesamten Kram von tbGUI rendern.Der Aufruf von tbGUIImage zum rendern kommt ja aus der Klasse tbGUI.
Ich werde aber nochmal probieren das ich vor dem rendern die Textur nochmal manuell setze.Vielleicht klappt es ja.

Mittlerweile zeigt er mir ja kein weisses Rechteck mehr an sondern eine Textur die ich an einer ganz anderen Stelle benutzt habe und die mittlerweile gar nicht mehr existieren dürfte.Ein wirklich seltsames Erlebnis 8)

shuffel

Frischling

  • »shuffel« ist der Autor dieses Themas

Beiträge: 13

Wohnort: Bochum

Beruf: Programmierer

  • Private Nachricht senden

7

04.06.2004, 08:11

Das Problem hat sich mittlerweile erledigt.Was heisst,nicht ganz.
Diese Textur die gar nicht dahin sollte ist verschwunden.Auslöser waren falsche Parameter in einer DrawPrimitive Funktion an einer ganz anderen Stelle.Schon genial was ein kleiner Fehler für Ausmaße haben kann :-D :-D

Anonymous

unregistriert

8

04.06.2004, 15:18

Hallo Allerseits!

Ich hatte das gleiche Problem wie Ihr und konnte es durch eine kleine Modifikation am Engine beheben.
Und zwar habe ich in tbDirect3D.cpp die SetTexture(..)-Funktion wie Folgt geändert:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// ******************************************************************
// Setzen einer Textur
tbResult tbDirect3D::SetTexture(DWORD dwStage,
                                PDIRECT3DBASETEXTURE9 pTexture)
{
    // In der Debug-Version wird geprüft, ob dwStage in Ordnung ist.
#ifdef _DEBUG
    if(dwStage < 0 || dwStage > 8)
    {
        // Texturschicht ist nicht gültig!
        TB_ERROR("Ungültige Texturschicht!", TB_ERROR);
    }
#endif

    // Prüfen, ob die Textur vielleicht schon gesetzt wurde.
    // Falls ja, wird direkt abgebrochen.
    PDIRECT3DBASETEXTURE9 pTextureTmp=NULL;                           <------
    m_pD3DDevice->GetTexture(dwStage, &pTextureTmp);                  <------
    if(pTextureTmp == pTexture) return TB_OK;                         <------
    else{
        // Die Textur setzen und die Tabelle aktualisieren
        m_pD3DDevice->SetTexture(dwStage, pTexture);
        m_apTexture[dwStage] = pTexture;
    }

    return TB_OK;
}


Bei mir bestand das Problem darin, dass ich in anderen Funktionen (die nichts mit der TriBase Engine zu tun haben) Texturen gesetzt habe. In der 'normalen' SetTexture Methode von TriBase ist dieser Fall nicht berücksichtigt. Das Engine geht davon aus, dass die Texturen die auf der Textur-Stage liegen noch die selben sind die das Engine selbst gesetzt hat.

Ziagl

Frischling

Beiträge: 4

Wohnort: Lilienfeld

Beruf: Schüler

  • Private Nachricht senden

9

05.06.2004, 14:21

Bei mir funkt GUIImage auch nicht! Doch anders als bei Patrick wird bei mir nicht mal ein weißes Dreieck angezeigt!

Wieso wird bei mir nicht mal ein weißes Dreieck angezeigt??? Was ist da falsch?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Dritte Seite (Menü, Mission)
    m_pGUI->CreateFrame(300, 2, tbVector2(10.0f, 10.0f), tbVector2(780.0f, 580.0f));
    m_pGUI->CreateButton(301, 2, tbVector2(50.0f, 50.0f), tbVector2(120.0f, 50.0f), "Mission");
    m_pGUI->CreateButton(302, 2, tbVector2(50.0f, 120.0f), tbVector2(120.0f, 50.0f), "Schiff");
    m_pGUI->CreateButton(303, 2, tbVector2(50.0f, 440.0f), tbVector2(120.0f, 50.0f), "Hauptmenü");
    m_pGUI->CreateButton(304, 2, tbVector2(50.0f, 510.0f), tbVector2(120.0f, 50.0f), "Spiel Starten");
    m_pGUI->CreateFrame(305, 2, tbVector2(230.0f, 50.0f), tbVector2(520.0f, 510.0f));
    m_pGUI->CreateText(306, 2, tbVector2(250.0f, 70.0f), "Missionsbesprechung");
    m_pGUI->CreateFrame(307, 2, tbVector2(250.0f, 120.0f), tbVector2(450.0f, 250.0f));
    m_pGUI->CreateImage(308, 2, tbVector2(255.0f, 125.0f), tbVector2(440.0f, 240.0f), m_pBackground, tbVector2(0.0f,0.0f), tbVector2(1.0f,1.0f), tbColor(1.0f, 0.75f, 0.75f));
    // Image funktioniert nicht
    m_pGUI->CreateButton(309, 2, tbVector2(250.0f, 370.0f), tbVector2(40.0f, 40.0f), "<");
    m_pGUI->CreateButton(310, 2, tbVector2(290.0f, 370.0f), tbVector2(40.0f, 40.0f), "<<");
    m_pGUI->CreateButton(311, 2, tbVector2(660.0f, 370.0f), tbVector2(40.0f, 40.0f), ">");
    m_pGUI->CreateButton(312, 2, tbVector2(620.0f, 370.0f), tbVector2(40.0f, 40.0f), ">>");
    m_pGUI->CreateText(313, 2, tbVector2(460.0f, 380.0f), "");   // Anzahl und aktuelle Nummer von Bildern

    m_pGUI->CreateText(314, 2, tbVector2(250.0f, 410.0f), "Beschreibung");
    m_pGUI->CreateFrame(315, 2, tbVector2(250.0f, 440.0f), tbVector2(450.0f, 100.0f));
    m_pGUI->CreateText(316, 2, tbVector2(260.0f, 450.0f), "");
The truth, as always, will be far stranger!

Anonymous

unregistriert

10

07.06.2004, 11:28

Hast Du schon die Änderungen vorgenommen:
http://www.scherfgen-software.net/forum/…er=asc&start=15 ?

Werbeanzeige