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
Administrator
Anonymous
unregistriert
Administrator
Anonymous
unregistriert
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 48 49 |
********************************************************************/ #include <DiReX.h> // ****************************************************************** // Nachrichtenfunktion für ein Bild drxResult drxGUIImage::ReceiveMessage(const drxGUIMessage* pMsg) { drxGUIVertex aVertex[4]; switch(pMsg->Type) { case DRX_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 drxDirect3D::SetTexture(0, m_pTexture); // Vertexformat und Render-States drxDirect3D::SetRS(D3DRS_ZENABLE, FALSE); drxDirect3D::SetRS(D3DRS_ZWRITEENABLE, FALSE); drxDirect3D::SetRS(D3DRS_COLORVERTEX, TRUE); drxDirect3D::SetRS(D3DRS_ALPHABLENDENABLE, TRUE); drxDirect3D::SetRS(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); drxDirect3D::SetRS(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); drxDirect3D::SetTSS(0, D3DTSS_COLOROP, D3DTOP_MODULATE); drxDirect3D::SetTSS(0, D3DTSS_COLORARG1, D3DTA_CURRENT); drxDirect3D::SetTSS(0, D3DTSS_COLORARG2, D3DTA_TEXTURE); drxDirect3D::SetTSS(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); drxDirect3D::SetTSS(0, D3DTSS_ALPHAARG1, D3DTA_CURRENT); drxDirect3D::SetTSS(0, D3DTSS_ALPHAARG2, D3DTA_TEXTURE); // Dreiecke zeichnen drxDirect3D::GetDevice()->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex, sizeof(drxGUIVertex)); } break; } return DRX_OK; } |
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
// Lädt den Spielzustand drxResult CMainMenu::Load() { CGame* pGame; // Zeiger kopieren pGame = g_pGalactica->m_pGame; // Hintergrundbild laden m_pBackground = drxTextureManager::GetTexture("Data\\Metal96.jpg", TRUE, D3DX_DEFAULT, D3DX_DEFAULT, 1); if(m_pBackground == NULL) DRX_ERROR("Fehler beim Laden von Data\\Metal96.jpg!", DRX_ERROR); // Credits S.Karlhoff Bild laden m_pCreditsSK = drxTextureManager::GetTexture("Data\\CreditsSK.bmp", TRUE, D3DX_DEFAULT, D3DX_DEFAULT, 1, D3DFMT_A8R8G8B8, 0, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, D3DCOLOR_XRGB(255, 0, 255)); if(m_pCreditsSK == NULL) DRX_ERROR("Fehler beim Laden von Data\\CreditsSK.bmp!", DRX_ERROR); // Skin der Benutzeroberfläche erstellen m_GUISkin.pSkinTexture = drxTextureManager::GetTexture("Data\\GUI.bmp", TRUE, D3DX_DEFAULT, D3DX_DEFAULT, 1, D3DFMT_UNKNOWN, 0, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, D3DCOLOR_XRGB(255, 0, 255)); m_GUISkin.pEffect = new drxEffect; m_GUISkin.pEffect->Init("Data\\GUI.fx"); m_GUISkin.pEffect->GetEffect()->SetTexture("Texture", m_GUISkin.pSkinTexture); m_GUISkin.pFont = g_pGalactica->m_pFont2; m_GUISkin.vCursorSize = drxVector2(32.0f, 32.0f); m_GUISkin.CursorColor1 = drxColor(1.0f, 1.0f, 1.0f, 0.75f); m_GUISkin.CursorColor2 = drxColor(1.0f, 1.0f, 1.0f, 0.75f); m_GUISkin.vCursorHotSpot = drxVector2(1.0f, 1.0f); m_GUISkin.fCursorSpeed = 400.0f; m_GUISkin.EnabledColor = drxColor(1.0f, 1.0f, 1.0f, 0.5f); m_GUISkin.DisabledColor = drxColor(1.0f, 1.0f, 1.0f, 0.25f); m_GUISkin.HighlightColor = drxColor(1.0f, 1.0f, 1.0f, 0.75f); m_GUISkin.vTextSize = drxVector2(1.0f); m_GUISkin.EnabledTextColor = drxColor(1.0f, 1.0f, 1.0f, 0.75f); m_GUISkin.DisabledTextColor = drxColor(1.0f, 1.0f, 1.0f, 0.25f); m_GUISkin.HighlightTextColor = drxColor(1.0f, 1.0f, 1.0f, 1.0f); if(m_GUISkin.pSkinTexture == NULL) DRX_ERROR("Fehler beim Laden der Skin-Textur für die Benutzeroberfläche!", DRX_ERROR); if(m_GUISkin.pEffect == NULL) DRX_ERROR("Fehler beim Laden des Effekts für die Benutzeroberfläche!", DRX_ERROR); // Benutzeroberfläche erstellen m_pGUI = new drxGUI; if(m_pGUI->Init(&m_GUISkin, MainMenuMsgProc, drxVector2(1024.0f, 768.0f), drxDirect3D::GetScreenSize() / drxVector2(1024.0f, 768.0f))) { // Fehler! DRX_ERROR("Fehler bei der Erstellung der Benutzeroberfläche!", DRX_ERROR); } // Benutzeroberfläche erstellen // Erste Seite //m_pGUI->CreateFrame(100, 0, drxVector2(10.0f, 10.0f), drxVector2(800.0f, 548.0f)); m_pGUI->CreateButton(101, 0, drxVector2(50.0f, 50.0f), drxVector2(160.0f, 50.0f), "Spiel starten"); m_pGUI->CreateButton(102, 0, drxVector2(50.0f, 120.0f), drxVector2(160.0f, 50.0f), "Steuerung"); m_pGUI->CreateButton(103, 0, drxVector2(50.0f, 190.0f), drxVector2(160.0f, 50.0f), "Spiel beenden"); m_pGUI->CreateButton(109, 0, drxVector2(50.0f, 260.0f), drxVector2(160.0f, 50.0f), "TEST"); m_pGUI->CreateFrame(104, 0, drxVector2(230.0f, 50.0f), drxVector2(700.0f, 660.0f)); m_pGUI->CreateText(105, 0, drxVector2(250.0f, 70.0f), "Schiffs- und Teamauswahl"); m_pGUI->CreateText(105, 0, drxVector2(250.0f, 110.0f), "Verfügbare Schiffstypen"); m_pGUI->CreateList(106, 0, drxVector2(250.0f, 140.0f), drxVector2(192.0f, 120.0f), 20.0f); for(int i = 0; i < pGame->m_iNumShipTypes; i++) { ((drxGUIList*)(m_pGUI->GetElement(106)))->AddEntry(pGame->m_aShipType[i].acName, &pGame->m_aShipType[i]); } m_pGUI->CreateFrame(107, 0, drxVector2(490.0f, 140.0f), drxVector2(340.0f, 220.0f)); m_pGUI->CreateText(108, 0, drxVector2(500.0f, 150.0f), ""); m_pGUI->CreateText(120, 0, drxVector2(250.0f, 370.0f), "Team 1"); m_pGUI->CreateList(121, 0, drxVector2(250.0f, 400.0f), drxVector2(192.0f, 100.0f), 20.0f); m_pGUI->CreateButton(122, 0, drxVector2(320.0f, 370.0f), drxVector2(30.0f, 30.0f), "+"); m_pGUI->CreateButton(123, 0, drxVector2(355.0f, 370.0f), drxVector2(30.0f, 30.0f), "-"); m_pGUI->CreateText(130, 0, drxVector2(500.0f, 370.0f), "Team 2"); m_pGUI->CreateList(131, 0, drxVector2(500.0f, 400.0f), drxVector2(192.0f, 100.0f), 20.0f); m_pGUI->CreateButton(132, 0, drxVector2(570.0f, 370.0f), drxVector2(30.0f, 30.0f), "+"); m_pGUI->CreateButton(133, 0, drxVector2(605.0f, 370.0f), drxVector2(30.0f, 30.0f), "-"); m_pGUI->CreateText(140, 0, drxVector2(250.0f, 510.0f), "Team 3"); m_pGUI->CreateList(141, 0, drxVector2(250.0f, 540.0f), drxVector2(192.0f, 100.0f), 20.0f); m_pGUI->CreateButton(142, 0, drxVector2(320.0f, 510.0f), drxVector2(30.0f, 30.0f), "+"); m_pGUI->CreateButton(143, 0, drxVector2(355.0f, 510.0f), drxVector2(30.0f, 30.0f), "-"); m_pGUI->CreateText(150, 0, drxVector2(500.0f, 510.0f), "Team 4"); m_pGUI->CreateList(151, 0, drxVector2(500.0f, 540.0f), drxVector2(192.0f, 100.0f), 20.0f); m_pGUI->CreateButton(152, 0, drxVector2(570.0f, 510.0f), drxVector2(30.0f, 30.0f), "+"); m_pGUI->CreateButton(153, 0, drxVector2(605.0f, 510.0f), drxVector2(30.0f, 30.0f), "-"); // Zweite Seite m_pGUI->CreateFrame(200, 1, drxVector2(10.0f, 10.0f), drxVector2(1004.0f, 748.0f)); m_pGUI->CreateButton(201, 1, drxVector2(50.0f, 50.0f), drxVector2(160.0f, 50.0f), "OK"); m_pGUI->CreateFrame(202, 1, drxVector2(230.0f, 50.0f), drxVector2(520.0f, 510.0f)); m_pGUI->CreateText(203, 1, drxVector2(250.0f, 70.0f), "Steuerung"); m_pGUI->CreateCheckBox(204, 1, drxVector2(450.0f, 70.0f), drxVector2(32.0f), "Joystick benutzen", g_pGalactica->m_pGame->m_bUseJoystick); m_pGUI->GetElement(204)->Enable(drxDirectInput::GetNumButtons() > 122); m_pGUI->CreateText(205, 1, drxVector2(250.0f, 120.0f), "Aktion", drxColor(1.0f, 0.75f, 0.75f)); m_pGUI->CreateText(206, 1, drxVector2(250.0f, 150.0f), "Lenkung\nSchubkontrolle\nVoller Stopp\nLaser abfeuern\nRaketen abfeuern\nNächstes Ziel\nAuto-Aim an/aus\nRadarreichweite erhöhen\nRadarreichweite verringern\nSelbstzerstörung\nCockpitkamera\nJagdkamera\nFreie Jagdkamera\nJagdkamera von vorne\nFlyBy-Kamera\nPadlock-Kamera\nRaketenkamera\nJagdraketenkamera\nFlyBy-Raketenkamera", m_pGUI->GetSkin().EnabledTextColor, drxVector2(0.85f, 1.0f)); m_pGUI->CreateText(207, 1, drxVector2(450.0f, 120.0f), "Joystick", drxColor(1.0f, 0.75f, 0.75f)); m_pGUI->CreateText(208, 1, drxVector2(450.0f, 150.0f), "Achsen\nSchieberegler\n[NICHT BELEGT]\n1. Knopf\n2. Knopf\n3. Knopf\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]\n[NICHT BELEGT]", m_pGUI->GetSkin().EnabledTextColor, drxVector2(0.85f, 1.0f)); m_pGUI->CreateText(209, 1, drxVector2(580.0f, 120.0f), "Tastatur", drxColor(1.0f, 0.75f, 0.75f)); m_pGUI->CreateText(210, 1, drxVector2(580.0f, 150.0f), "Cursortasten, Q, W\nPlus/Minus (NumPad)\nRücktaste\nShift links\nStrg links\nT\nA\nBild auf\nBild ab\nS + D\nF1\nF2\nF3\nF4\nF5\nF6\nF7\nF8\nF9", m_pGUI->GetSkin().EnabledTextColor, drxVector2(0.85f, 1.0f)); // Dritte Seite m_pGUI->CreateFrame(300, 2, drxVector2(10.0f, 10.0f), drxVector2(1004.0f, 748.0f)); m_pGUI->CreateText(301, 2, drxVector2(400.0f, 300.0f), "LADEVORGANG", drxColor(0.25f, 1.0f, 0.25f, 1.0f), drxVector2(2.0f, 4.0f), DRX_FF_RELATIVESCALING | DRX_FF_ALIGN_HCENTER | DRX_FF_ALIGN_VCENTER); m_pGUI->CreateText(302, 2, drxVector2(400.0f, 350.0f), "Bitte warten Sie einen Moment...", drxColor(1.0f), drxVector2(1.0f, 2.0f), DRX_FF_RELATIVESCALING | DRX_FF_ALIGN_HCENTER | DRX_FF_ALIGN_VCENTER); // Vierte Seite m_pGUI->CreateFrame(400, 3, drxVector2(10.0f, 10.0f), drxVector2(1004.0f, 748.0f)); // Button zum schliessen der Page m_pGUI->CreateButton(401, 3, drxVector2(50.0f, 50.0f), drxVector2(120.0f, 50.0f), "Schliessen"); // Texte m_pGUI->CreateText(402, 3, drxVector2(400.0f, 120.0f), "C R E D I T S", drxColor(0.50f, 0.75f, 0.25f)); m_pGUI->CreateText(403, 3, drxVector2(400.0f, 180.0f), "Programmierung", drxColor(0.75f, 0.75f, 0.25f)); m_pGUI->CreateText(404, 3, drxVector2(400.0f, 200.0f), "Sascha & Marco Karlhoff", drxColor(0.75f, 0.75f, 0.25f)); m_pGUI->CreateText(405, 3, drxVector2(400.0f, 240.0f), "Grafik & Animation", drxColor(0.75f, 0.75f, 0.25f)); m_pGUI->CreateText(406, 3, drxVector2(400.0f, 260.0f), "Sascha Karlhoff", drxColor(0.75f, 0.75f, 0.25f)); m_pGUI->CreateText(407, 3, drxVector2(400.0f, 300.0f), "Sound & Musik", drxColor(0.75f, 0.75f, 0.25f)); m_pGUI->CreateText(408, 3, drxVector2(400.0f, 320.0f), "Marco Fromholz", drxColor(0.75f, 0.75f, 0.25f)); // Bild von Sascha an Position 400, 340 - Größe 120x120 m_pGUI->CreateImage(410, 3, drxVector2(400.0f, 340.0f), drxVector2(120.0f, 120.0f), m_pCreditsSK, drxVector2(0.0f, 0.0f), drxVector2(1.0f, 1.0f), drxColor(1.0f)); // 4te Seite ist aktiv m_pGUI->SetCurrentPage(3); g_bStartGame = FALSE; return DRX_OK; } |
Anonymous
unregistriert
Anonymous
unregistriert
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
********************************************************************/ #include <TriBase.h> // ****************************************************************** // 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::SetTexture(0, m_pTexture); // Vertexformat und Render-States tbDirect3D::SetRS(D3DRS_ZENABLE, FALSE); tbDirect3D::SetRS(D3DRS_ZWRITEENABLE, FALSE); tbDirect3D::SetRS(D3DRS_COLORVERTEX, TRUE); tbDirect3D::SetRS(D3DRS_ALPHABLENDENABLE, TRUE); tbDirect3D::SetRS(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); tbDirect3D::SetRS(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); tbDirect3D::SetTSS(0, D3DTSS_COLOROP, D3DTOP_MODULATE); tbDirect3D::SetTSS(0, D3DTSS_COLORARG1, D3DTA_CURRENT); tbDirect3D::SetTSS(0, D3DTSS_COLORARG2, D3DTA_TEXTURE); tbDirect3D::SetTSS(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); tbDirect3D::SetTSS(0, D3DTSS_ALPHAARG1, D3DTA_CURRENT); tbDirect3D::SetTSS(0, D3DTSS_ALPHAARG2, D3DTA_TEXTURE); // Dreiecke zeichnen tbDirect3D::GetDevice()->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex, sizeof(tbGUIVertex)); } break; } return TB_OK; } // ****************************************************************** // Erstellung eines Bildes tbResult tbGUI::CreateImage(int iID, int iPage, tbVector2 vPosition, tbVector2 vSize, PDIRECT3DTEXTURE9 pTexture, tbVector2 vTopLeftTex, // = tbVector2(0.0f, 0.0f) tbVector2 vBottomRightTex, // = tbVector2(1.0f, 1.0f) tbColor Color) // = tbColor(1.0f) { tbGUIElement* pElement; tbGUIImage* pImage; // Image erstellen pElement = CreateElement(iID, TB_GET_IMAGE, iPage, vPosition, vSize); if(pElement == NULL) TB_ERROR("Fehler beim Erstellen des Bildes!", TB_ERROR); // Daten eintragen pImage = (tbGUIImage*)(pElement); pImage->m_pTexture = pTexture; pImage->m_vTopLeftTex = vTopLeftTex; pImage->m_vBottomRightTex = vBottomRightTex; pImage->m_Color = Color; return TB_OK; } // ****************************************************************** |
Anonymous
unregistriert
Zitat von »"Anonymous"«
Hey David,,,
ich bin jetzt sämtliche Wege durchgegangen und kam nicht zum ergebnis. Es kommt keine Fehlermeldung, kein Absturz, aber auch kein Bild. Du sagtes bei Dir hat es geklappt, hast Du das Beispiel noch ? Vielleicht könntest Du mir das ja mal mailen, ich weiß da echt nicht weiter. Habe i, Buch geschaut, aber auch dort nichts gefunden und die Daten die die Methode erwartet sind korrekt. Wäre nett wenn du mir Dein funktionierendes Beispiel mailen könntest.
Danke im vorraus.
Zitat
Von SM3D, Sorry Sch... IE6
Anonymous
unregistriert
Quellcode |
|
1 |
drxDirect3D::SetFVF(DRX_GUI_FVF); |
Anonymous
unregistriert
Anonymous
unregistriert
Quellcode |
|
1 2 3 4 5 6 7 |
m_pGUI->CreateImage(610, 5, drxVector2(300.0f, 100.0f), drxVector2(400.0f, 600.0f), m_pCreditsBild, drxVector2(0.0f, 0.0f), drxVector2(1.0f, 1.0f), drxColor(1.0f, 1.0f, 1.0f, 0.75f)); |
Quellcode |
|
1 2 3 4 5 6 7 |
m_pGUI->CreateImage(610, 5, drxVector2(300.0f, 100.0f), drxVector2(400.0f, 600.0f), m_pCreditsBild, drxVector2(0.0f, 0.0f), drxVector2(1.0f, 1.0f), drxColor(1.0f)); |
Werbeanzeige