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

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

11

01.07.2003, 13:17

öhm ich habe es im debug modus gemacht... wie sollte ich denn sonst auch debuggen... habe außerdem grade extra noch mal nachgeschaut und es war auf debug...

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

12

01.07.2003, 13:25

Ich habs.
Ich hab die Engine einfach im Release Modus compiliert und etz stürzt es nicht mehr ab wenn man alle Zeichen aus dem Feld löscht. Das Problem wäre damit also gelöst, danke für die schnelle Hilfe David!!!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

13

01.07.2003, 13:55

Ich habs nochmal mit Debug ausprobiert und da war tatsächlich noch ein Fehler. Der ist auch im Release da, aber führt nicht zum Absturz.
In tbGUIInput.cpp in Zeile 153 (da, wo "// Text zeichnen" steht), machst Du um den Aufruf einen if-Block herum:

Quellcode

1
2
3
4
5
if(strlen(m_acText) > 0)
{
    // Text zeichnen
    m_pGUI->m_Skin.pFont->DrawText ...
}

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

14

02.07.2003, 22:12

Jop ok etz klappts. Danke David!

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

15

11.07.2003, 13:11

Öhm andre Frage:
kanns sein dass in tbGUIImage auch ein bug ist?
weil wenn ich da welche erstelle werden die irgendwie nicht gerendert, buttons und texte usw. aber schon. woran könnte es liegen?

mfg Cute

p.s. war zu faul nen neuen thread aufzumachen weil der mir noch passend erschien ;)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

16

11.07.2003, 14:48

Du hast recht! Sorry! Keine Ahnung, was ich da gemacht habe...
So geht's: Ändere tbGUIImage::ReceiveMessage in tbGUIImage.cpp so um:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// ******************************************************************
// Nachrichtenfunktion für ein Bild
tbResult tbGUIImage::ReceiveMessage(const tbGUIMessage* pMsg)
{
    tbGUIVertex aVertex[4];

    switch(pMsg->Type)
    {
    case TB_GMT_RENDER:
        // Wenn das Element unsichtbar ist, wird es nicht gerendert.
        if(!m_bVisible) break;

        if(pMsg->aiInt[0] == 2)
        {
            // Bild zeichnen
            m_pGUI->AddRect(m_vPosition * m_pGUI->m_vScaling, m_vSize * m_pGUI->m_vScaling,
                            m_Color, m_vTopLeftTex, m_vBottomRightTex - m_vTopLeftTex,
                            aVertex);

            // Textur setzen
            tbDirect3D& D3D = tbDirect3D::Instance();
            D3D.SetTexture(0, m_pTexture);

            // Vertexformat und Render-States
            D3D.SetFVF(tbGUIVertex::dwFVF);
            D3D.SetRS(D3DRS_ZENABLE, FALSE);
            D3D.SetRS(D3DRS_ZWRITEENABLE, FALSE);
            D3D.SetRS(D3DRS_COLORVERTEX, TRUE);
            D3D.SetRS(D3DRS_ALPHABLENDENABLE, TRUE);
            D3D.SetRS(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
            D3D.SetRS(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
            D3D.SetTSS(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
            D3D.SetTSS(0, D3DTSS_COLORARG1, D3DTA_CURRENT);
            D3D.SetTSS(0, D3DTSS_COLORARG2, D3DTA_TEXTURE);
            D3D.SetTSS(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
            D3D.SetTSS(0, D3DTSS_ALPHAARG1, D3DTA_CURRENT);
            D3D.SetTSS(0, D3DTSS_ALPHAARG2, D3DTA_TEXTURE);

            // Dreiecke zeichnen
            D3D->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex,
                                 sizeof(tbGUIVertex));
        }
        break;
    }

    return TB_OK;
}


Edit: Ups, das ist die neue Schreibweise (für Auflage 2). Bei Dir ist tbDirect3D noch eine statische Klasse, und Du müsst überall tbDirect3D:: anstatt D3D. hinschreiben. Und bei DrawPrimitiveUP: tbDirect3D::GetDevice()->DrawPrimitiveUP(...). Außerdem ersetzt Du tbGUIVertex::dwFVF durch TB_GUI_FVF.

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

17

11.07.2003, 15:03

wow danke david für den schnellen support, echt super... ich wunder mich nur wie du das machst dass du die bugs immer so schnell findest ;) ich brauch da immer länger dazu löl..
naja etz gehts jedenfalls, danke!

p.s. sowas wie nen ColorKey gibts bei tbGUIImage nicht gell?! Könnteste in Auflage 2 vielleicht machen, wär ganz praktisch...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

18

11.07.2003, 15:11

Kein Problem!
Den Color-Key musst Du schon beim Laden der Textur mit angeben!

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

19

11.07.2003, 21:11

Ah, das ist klug! LoL das ich da nicht draufgekommen bin...

EDIT:
So hab das etz gemacht nur das, was durch den COlorKey eigentlich weg sein sollte wird etz einfach schwarz gerendert. woran könnte das wieder liegen?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

20

11.07.2003, 23:24

Die Textur muss einen Alphakanal haben, also z.B. das Format D3DFMT_A8R8G8B8. Gib das beim Laden an.

Werbeanzeige