JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3d7a81e56c680dc2191ebc57d9e03bebMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Mehrere Sprite instanzen
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
-=|BLACK|=-
Mini JLI'ler


Alter: 40
Anmeldedatum: 25.07.2007
Beiträge: 18

Medaillen: Keine

BeitragVerfasst am: 26.07.2007, 00:22    Titel: Antworten mit Zitat

nee mit dem windowed ändert sich aucht nichts Sad

hier der code der main:
CPP:
#include "cwindow.h"
#include "CDirect3D.h"
#include "CSprite.h"
#include "CRescourceManager.h"
using namespace std;

const int NumOfAsteroids = 10;

CSprite Sprite[NumOfAsteroids];

int WINAPI WinMain(HINSTANCE hInstance,
              HINSTANCE hPrevInstance,
              LPSTR lpCmdLine,
              int nCmdShow)
{
   srand(timeGetTime());
   HWND hWnd = NULL;
   CCreateWindow Window;

   CDirect3D Direct3D;
   CResourceManager ResourceManager;


   // Fenster erzeugen und Handle speichern
   hWnd = Window.CreateMainWindow(hInstance);

   Direct3D.Init(hWnd, FALSE);
   Direct3D.SetClearColor(D3DCOLOR_XRGB(0, 0, 0));
   ResourceManager.Init(Direct3D.GetDevice());

   // Wenn Fehler
   if(!hWnd)
   {
      MessageBox(NULL, "Fenster konnte nicht erzeugt werden",
               "Fehler", MB_OK);
      return 0;
   }
   MSG msg;

   // Maus Cursor verstecken
   ShowCursor(FALSE);



    // Grafiken (Texturen) laden
    char Filename[256];

   for(int i=0; i < NumOfAsteroids; i++)
   {
      Sprite[i].Create(Direct3D.GetDevice(), rand()%5+10);
      Sprite[i].SetPosition(rand()%1024, rand()%769);
      Sprite[i].SetStep(rand()%10, rand()%10);
      for(int n=0; n < 9; n++)
      {
         sprintf(Filename, "asteroid/asteroid%d.png", n+1);
         Sprite[i].AddTexture(ResourceManager.AddTexture(Filename));
      }
   }

   while(msg.message != WM_QUIT)
   {
      if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
      {
         TranslateMessage(&msg);
         DispatchMessage(&msg);
      }
      else
      {
            Direct3D.BeginScene();

            // Asteroiden mit Bounce bewegen und zeichnen
            for(int i=0;i<NumOfAsteroids;i++)
            {
                Sprite[i].Bounce();

                Sprite[i].Draw();
            }

            Direct3D.EndScene();
      }
   }

   return 0;
}


so funktioniert es!
wenn aber
CSprite Sprite[NumOfAsteroids]; in der main definiert wird, kommt wieder das problem!
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: 26.07.2007, 00:38    Titel: Antworten mit Zitat

ist es dabei egal wo in der main du das Array definierst? Ich würde an dem Punkt das Problem untersuchen... Wenn es mit der Unterschied global / lokal das Problem verschwinden lässt, liegt es vllt an den Kon- bzw. Destruktoren der Sprite Klasse. Oder es liegt an der Tatsache dass ein anderes Objekt (Device, ResManager...) vorher / nachher konstruiert wird

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
-=|BLACK|=-
Mini JLI'ler


Alter: 40
Anmeldedatum: 25.07.2007
Beiträge: 18

Medaillen: Keine

BeitragVerfasst am: 26.07.2007, 00:44    Titel: Antworten mit Zitat

ja das habe ich auch schon ausprobiert!
das ist egal!

wo liegt denn der unterschied zwischen einer localen und einer globalen definition?

bei der localen wird der destuctor der objekte beim verlassen des blocks aufgerufen

und bei der localen beim verlassen des programmes.

da ich das aber in der main definiert habe und der block sowieso erst beim beenden des programmes zuende ist, dürfte das doch eingeltich keinen unterschied machen oder?
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: 26.07.2007, 00:53    Titel: Antworten mit Zitat

naja es ist ja nicht nur der destruktor betroffen, vielmehr der konstruktor (machst du da etwas besonderes?); der wird nämlich beim einen vor aufruf der Main (also beim initialisieren des Programms) und beim anderen aus der Main (also während) heraus aufgerufen. Hast du auch mal versucht das zu debuggen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
-=|BLACK|=-
Mini JLI'ler


Alter: 40
Anmeldedatum: 25.07.2007
Beiträge: 18

Medaillen: Keine

BeitragVerfasst am: 26.07.2007, 00:58    Titel: Antworten mit Zitat

nee in dem konstruktor der sprite klasse wird nur das sprite objekt auf null gesetzt!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
-=|BLACK|=-
Mini JLI'ler


Alter: 40
Anmeldedatum: 25.07.2007
Beiträge: 18

Medaillen: Keine

BeitragVerfasst am: 26.07.2007, 01:05    Titel: Antworten mit Zitat

ok ich habe das problem gefunden!

ich habe das ganze mal im release modus kompiliert und auf einmal gabs keine probleme mehr!

vielen danke für eure posts!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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
Seite 2 von 2

 
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