JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Gebäude erstellen
Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 18:18    Titel: Antworten mit Zitat

Bei OOP sölltest du eine Sprite Klasse machen und die dann in deine Gebäude Klase vererben aber so wie du es machst ist es sicher noch feiner.
Die Kasse kannst du dann auch in deien Einheiten und Gelände Tiles(falls du es mit Texturen machst)Klassen benutzten.
_________________
Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 18:56    Titel: Antworten mit Zitat

fast hawk hat Folgendes geschrieben:
Bei OOP sölltest du eine Sprite Klasse machen und die dann in deine Gebäude Klase vererben aber so wie du es machst ist es sicher noch feiner.

Nope, an dieser Stelle ist eine 'Hat-Beziehung' angebracht, da ein Gebäude kein Sprite 'ist', sondern lediglich Sprites zur optischen Repräsentierung nutzt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 19:03    Titel: Antworten mit Zitat

GreveN hat Folgendes geschrieben:
fast hawk hat Folgendes geschrieben:
Bei OOP sölltest du eine Sprite Klasse machen und die dann in deine Gebäude Klase vererben aber so wie du es machst ist es sicher noch feiner.

Nope, an dieser Stelle ist eine 'Hat-Beziehung' angebracht, da ein Gebäude kein Sprite 'ist', sondern lediglich Sprites zur optischen Repräsentierung nutzt.

Arrow Layering Wink

@GreveN
haste das aus "Spieleprogrammierung Gems"?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 19:22    Titel: Antworten mit Zitat

Ne aber ein Gebäude braucht ein Sprite(oder ähnliches)
um sichar zu werden so braucht jedes gebäude eigentlich auch ein Sprite. Arrow
_________________
Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 19:34    Titel: Antworten mit Zitat

fast hawk hat Folgendes geschrieben:
Ne aber ein Gebäude braucht ein Sprite(oder ähnliches)
um sichar zu werden so braucht jedes gebäude eigentlich auch ein Sprite. Arrow


Aber ein Gebäude ist kein Sprite, deswegen kannst du auch keine globale Vererbung benutzen. Du kannst ja nicht das V und A von E-V-A gleichsetzen.[/b]
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 20:14    Titel: Antworten mit Zitat

Jetzt bin ich ein bischen verwirrt, kann ich das nun doch nicht so machen wie ih will?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 20:39    Titel: Antworten mit Zitat

Vane hat Folgendes geschrieben:
Jetzt bin ich ein bischen verwirrt, kann ich das nun doch nicht so machen wie ih will?

natürlich, hier zwingt dich keiner Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 20:49    Titel: Antworten mit Zitat

ich würde gerne noch etwas wissen und zwar wie kriege ich das hin das meine anwendung im Vollbildmodus läuft, ich programmiere das spiel Mit Microsoft Visual C++ und DirectX
bin gerade am verzweifeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 20:53    Titel: Antworten mit Zitat

du must in der DirectX initizialotion den Wert PParam.Windowed auf FALSE setzen.
_________________
Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 21:09    Titel: Antworten mit Zitat

also bei mir wenn ich das programm starte, stürzt es ab der bleibt immer bei der Funktion BeginScene() stehen..
Warum?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 21:44    Titel: Antworten mit Zitat

Vane hat Folgendes geschrieben:
also bei mir wenn ich das programm starte, stürzt es ab der bleibt immer bei der Funktion BeginScene() stehen..
Warum?

das kann viele Gründe haben, poste ma den code dieser Funtkion und deiner Init-Funktion
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 21:48    Titel: Antworten mit Zitat

Einmal die init
CPP:
int InitD3D (int resWidth, int resHeight, D3DFORMAT resFormat, HWND hWnd, BOOL bWindowedMode)
{
   HRESULT hr;

   //Erstellt das direct 3d objekt
    d3d = Direct3DCreate9(D3D_SDK_VERSION);
   
   ZeroMemory (&d3dCaps, sizeof(d3dCaps));
    if (FAILED(d3d->GetDeviceCaps (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &d3dCaps)))
        return FALSE;

   ZeroMemory(&d3dPresent,sizeof(d3dPresent));
    d3dPresent.SwapEffect = D3DSWAPEFFECT_FLIP;
    d3dPresent.hDeviceWindow = hWnd;
    d3dPresent.BackBufferCount = 1;


       //Check if windowed
    if (bWindowedMode)
    {
        D3DDISPLAYMODE d3ddm;
        RECT rWindow;

        //Get display mode
        d3d->GetAdapterDisplayMode (D3DADAPTER_DEFAULT, &d3ddm);

        //Get window bounds
        GetClientRect (hWnd, &rWindow);

        //Setup screen dimensions
        resWidth = rWindow.right - rWindow.left;
        resHeight = rWindow.bottom - rWindow.top;

        //Setup backbuffer
        d3dPresent.Windowed = true;
        d3dPresent.BackBufferFormat = d3ddm.Format;
        d3dPresent.BackBufferWidth = rWindow.right - rWindow.left;
        d3dPresent.BackBufferHeight = rWindow.bottom - rWindow.top;
    }
    else
    {       
        d3dPresent.Windowed = false;
        d3dPresent.BackBufferWidth = resWidth;
        d3dPresent.BackBufferHeight = resHeight;
        d3dPresent.BackBufferFormat = resFormat;
    }

    //Check if hardware vertex processing is available
    if (d3dCaps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
    {   
        //Create device with hardware vertex processing
        hr = d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL, hWnd,
            D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dPresent, &d3dDevice);       
    }
    else
    {
        //Create device with software vertex processing
        hr = d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL, hWnd,
            D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dPresent, &d3dDevice);
    }

    //Make sure device was created
    if (FAILED(hr))
        return FALSE;

    //Setup Direct3D for rendering
    InitRendering (resWidth, resHeight);

   return TRUE;
}


und

CPP:
int BeginDrawing()
{
   return d3dDevice->BeginScene();
}


Hier bitte....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 22:02    Titel: Antworten mit Zitat

also

1. nimm lieber beim nächsten mal c++-tags und net nur code-tags Wink
2. der einfache
CPP:
int BeginDrawing()
{
   return d3dDevice->BeginScene();
}
Aufruf sagt uns nix, gib ma die zeilen zw. dem beginScene und endScene Wink

EDIT:
3. den InitRendering() auch ma bitte
4. und guck ma, ob du Windows das gleiche bWindowedMode wie DX gibst
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 20.12.2005, 22:05    Titel: Antworten mit Zitat

verstehe ich nicht ganz? welchen code braucht ihr denn??
CPP:
void InitRendering (int resWidth, int resHeight)
{
    D3DXMATRIX matOrtho;
    D3DXMATRIX matIdentity;

    //Setup an orthographic perspective
    D3DXMatrixOrthoLH (&matOrtho, (float) resWidth, (float) resHeight, 1.0f, 10.0f);
    D3DXMatrixIdentity (&matIdentity);
    d3dDevice->SetTransform (D3DTS_PROJECTION, &matOrtho);
    d3dDevice->SetTransform (D3DTS_VIEW, &matIdentity);
    d3dDevice->SetTransform (D3DTS_WORLD, &matIdentity);
   
    //Erstellt ein Vertex Buffer
    d3dDevice->CreateVertexBuffer(4 * sizeof(TLVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_TLVERTEX, D3DPOOL_MANAGED, &vertexBuffer, NULL);
   //Die Funktion SetStreamSource verbindet den Vertex Buffer mit dem Schnitstellen Daten Strom
   //Dient zur versorgung mit daten der Verarbeitung Funktionen
    d3dDevice->SetStreamSource(0, vertexBuffer, 0, sizeof(TLVERTEX));

    //Erstellt ein Aufstappel Vertex Buffer
    d3dDevice->CreateVertexBuffer(BATCH_BUFFER_SIZE * sizeof(TLVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_TLVERTEX, D3DPOOL_MANAGED, &vertexBatchBuffer, NULL);
    //Erstellt ein Index Buffer
   d3dDevice->CreateIndexBuffer (BATCH_BUFFER_SIZE * 3, D3DUSAGE_WRITEONLY, D3DFMT_INDEX16, D3DPOOL_MANAGED, &indexBatchBuffer, NULL);
   
   d3dDevice->SetIndices(indexBatchBuffer);
    numBatchVertices = 0;

    //Der Index Buffer wird gefüllt
    FillIndexBuffer ();

    //Setup vertex format
    d3dDevice->SetVertexShader(NULL);
    d3dDevice->SetFVF (D3DFVF_TLVERTEX);

    //Set render states
    d3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
    d3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
    d3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
    d3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
    d3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
}


CPP:
   ClearBuffer();
      BeginDrawing();

      BeginBatchDrawing(texture);

      DrawTile();

      EndBatchDrawing ();

      EndDrawing ();
        Present ();

ich hoffe das hilft
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 21.12.2005, 12:53    Titel: Antworten mit Zitat

OLiver hat Folgendes geschrieben:
fast hawk hat Folgendes geschrieben:
Ne aber ein Gebäude braucht ein Sprite(oder ähnliches)
um sichar zu werden so braucht jedes gebäude eigentlich auch ein Sprite. Arrow


Aber ein Gebäude ist kein Sprite, deswegen kannst du auch keine globale Vererbung benutzen. Du kannst ja nicht das V und A von E-V-A gleichsetzen.[/b]


Oh ich glaube ich hab bis jetzt vererbung falsch verstanden.
Denn bis jetzt hab ich ein Object Tür gemacht und die in as Haus vererbt.
Aber wie mir jetzt langsam dämmert ist das falsch denn eine Tür ist ja keine Oberklasse von einem Haus sonder die Tür ein Object in der Klasse(Object) Haus. Idea
Vane machs lieber so wie du es erst wolltest.!!
_________________
Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter
Seite 3 von 5

 
Gehe zu:  
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

Impressum