|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
-=|BLACK|=- Mini JLI'ler
Alter: 41 Anmeldedatum: 25.07.2007 Beiträge: 18
Medaillen: Keine
|
Verfasst am: 25.07.2007, 23:22 Titel: |
|
|
nee mit dem windowed ändert sich aucht nichts
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 25.07.2007, 23:38 Titel: |
|
|
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 |
|
|
-=|BLACK|=- Mini JLI'ler
Alter: 41 Anmeldedatum: 25.07.2007 Beiträge: 18
Medaillen: Keine
|
Verfasst am: 25.07.2007, 23:44 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 25.07.2007, 23:53 Titel: |
|
|
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 |
|
|
-=|BLACK|=- Mini JLI'ler
Alter: 41 Anmeldedatum: 25.07.2007 Beiträge: 18
Medaillen: Keine
|
Verfasst am: 25.07.2007, 23:58 Titel: |
|
|
nee in dem konstruktor der sprite klasse wird nur das sprite objekt auf null gesetzt! |
|
Nach oben |
|
|
-=|BLACK|=- Mini JLI'ler
Alter: 41 Anmeldedatum: 25.07.2007 Beiträge: 18
Medaillen: Keine
|
Verfasst am: 26.07.2007, 00:05 Titel: |
|
|
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 |
|
|
|
|
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
|