Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
peterbub JLI'ler
Anmeldedatum: 24.07.2005 Beiträge: 109
Medaillen: Keine
|
Verfasst am: 06.09.2006, 15:09 Titel: ALT+TAB problem |
|
|
Hallo ,
ich habe das gut ALT+ TAB Problem.
ich hab folgenden code geschrieben,was fehlt mir denn noch:
Code: |
while(msg.message != WM_QUIT)
{
//Windows message
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
if(pDevice.TestCooperativeLevel())
{
while(pDevice.TestCooperativeLevel() != 1)
{ //hWnd
while(PeekMessage(&msg,hWnd,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Sleep(100);
}
bWinActive = false;
pDevice.Reset();
m_lpGraphic->OnLostDevice();
m_lpGraphic->OnResetDevice();
pDevice.Restore(); // alle texturen laden
}
Render();
}
}
|
kann mir jemand helfen ?? |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 06.09.2006, 15:18 Titel: |
|
|
Was passiert denn wenn du alt+tab betätigst?
Helfen können wir dir schon wenn genügend Infos vorliegen _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 06.09.2006, 15:32 Titel: |
|
|
Die Schelife ist voll komisch, erklär mir die mal bitte.Eignetlihc brauchste doch nur eine ganz normale Mainloop und in die eine Abfrage OnReset oder was weiß ich was, wo du alles wiederherstellst. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
|
Nach oben |
|
|
peterbub JLI'ler
Anmeldedatum: 24.07.2005 Beiträge: 109
Medaillen: Keine
|
Verfasst am: 06.09.2006, 16:12 Titel: |
|
|
-stimmt den die reihen folge bei mir ?
- an welcher stelle soll ich die Objekt reseten oder loschen?
- was meinst du mit DX-Beispiele wo finde ich sie ?
danke |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 06.09.2006, 16:20 Titel: |
|
|
Ein Reset funktioniert wohl nicht immer bzw. mit allen Ressourcen, weshalb Löschen und Neuinitialisieren wohl die bessere Möglichkeit ist. Ich teste immer direkt am Anfang der Mainloop, ob meine Ressourcen nocht gültig sind und führe dann gegebenenfalls den Reset durch.
BLOD meinte sicher die Samples im DX-SDK. |
|
Nach oben |
|
|
peterbub JLI'ler
Anmeldedatum: 24.07.2005 Beiträge: 109
Medaillen: Keine
|
Verfasst am: 06.09.2006, 17:02 Titel: |
|
|
ich muss zugeben ich habe nur ein paar wenige aus dx-sdk gesehen ,die fullscreen benutzen und diese benutzen DXUT.
das kann ich für mich nicht einbauen. |
|
Nach oben |
|
|
peterbub JLI'ler
Anmeldedatum: 24.07.2005 Beiträge: 109
Medaillen: Keine
|
Verfasst am: 06.09.2006, 19:13 Titel: |
|
|
hier nochmal der gesamte code,allerdings vereinfacht.
ich weiss nicht was ich da falsch mache aber ALT+TAB geht einfach nicht
kann mir das jemand richtig stellen wäre echt toll
Code: |
while(msg.message != WM_QUIT)
{
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
if(Direct3D.TestCooperativeLevel())
{
//while(pDXWin.CheckDevice())
while(Direct3D.TestCooperativeLevel() != 1)
{ //hWnd
while(PeekMessage(&msg,hWnd,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Sleep(100);
}
lpSprite->OnLostDevice();
Direct3D.Reset();// einfach nur in der Dx Classe m_lpD3DDevice->Reset(&PParams);
lpSprite->OnResetDevice();
}
Direct3D.BeginScene();
// Zeichnen des Sprites
lpSprite->Begin(D3DXSPRITE_ALPHABLEND);
// Mittelpunkt des Sprite
D3DXVECTOR3 vCenter(32.0f, 32.0f, 0.0f);
// Sprite an Position 100, 100 zeichnen
D3DXVECTOR3 vPosition(100.0f, 100.0f, 0.0f);
// Farben der Textur sollen nicht veraendert werden
D3DCOLOR ModulateColor = 0xFFFFFFFF;
// Sprite zeichnen
lpSprite->Draw(lpSpriteTexture,
NULL,
&vCenter,
&vPosition,
ModulateColor);
lpSprite->End();
Direct3D.EndScene();
}
}
|
wie wäre es denn richtig
danke |
|
Nach oben |
|
|
peterbub JLI'ler
Anmeldedatum: 24.07.2005 Beiträge: 109
Medaillen: Keine
|
Verfasst am: 07.09.2006, 17:05 Titel: |
|
|
ich habe festgestellt, das mein Reset nicht geht.
Code: |
ZeroMemory(&PParams,sizeof(PParams));
PParams.BackBufferCount = 1;
PParams.MultiSampleType = D3DMULTISAMPLE_NONE;
PParams.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
PParams.EnableAutoDepthStencil = TRUE;
PParams.AutoDepthStencilFormat = D3DFMT_D16;
PParams.SwapEffect = D3DSWAPEFFECT_DISCARD;
PParams.hDeviceWindow = hWnd;
PParams.Windowed = bWindowed;
PParams.BackBufferWidth = SCR_WIDTH;
PParams.BackBufferHeight = SCR_HEIGHT;
PParams.BackBufferFormat = D3DFMT_X8R8G8B8;
PParams.PresentationInterval = D3DPRESENT_INTERVAL_ONE;
HRESULT hr;
// Direct3D-Gerät anlegen
if(FAILED(hr = m_lpD3D->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&PParams,
&m_lpD3DDevice)))
{
// Fehler, Gerät kann nicht angelegt werden
const char* Err = DXGetErrorDescription9(hr);
DXTRACE_MSG(Err);
return FALSE;
}
|
und wenn ich das resette mit
Code: |
if(FAILED(m_lpD3DDevice->Reset(&PParams)))
return FALSE;
return true;
|
bekomme ich false zurück ?
was mach ich denn falsch |
|
Nach oben |
|
|
|