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
Anonymous
unregistriert
Anonymous
unregistriert
Zitat
schau auch du mal nach ob du beim erzeugen der projektionsmatrix nicht die near und far clipping plane kervehrt rum angegeben hast.
irgend sowas hatten wir unlängst mal
Zitat
das backface culling is nach dem bild zu urteilen ja wohl nicht schuld
Zitat
wenn das auch nix hilft, dann poste mal den dx initialisierungs code
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 |
sPresentParameters.BackBufferWidth = sWindow.iWidth; sPresentParameters.BackBufferHeight = sWindow.iHeight; sPresentParameters.BackBufferFormat = D3DFMT_X8R8G8B8; sPresentParameters.BackBufferCount = 1; sPresentParameters.MultiSampleType = D3DMULTISAMPLE_NONE; sPresentParameters.SwapEffect = D3DSWAPEFFECT_DISCARD; sPresentParameters.Windowed = true; sPresentParameters.EnableAutoDepthStencil = true; sPresentParameters.AutoDepthStencilFormat = D3DFMT_D16; sPresentParameters.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; |
Quellcode |
|
1 2 3 |
sD3DSettings.D3DDeviceType = D3DDEVTYPE_HAL; sD3DSettings.dwBehaviorFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING; sD3DSettings.dwVertexFormat = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1; |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
HRESULT hResult; DWORD dwBahaviorFlags = sD3DSettings->dwBehaviorFlags; // Sollte hDeviceWindow 0 sein, so wird das durch createWindow erstellte Fenster benutzt if (sPresentParameters->hDeviceWindow == 0) sPresentParameters->hDeviceWindow = this->hWindow; // Geräteschnittstelle erzeugen hResult = pD3DInterface->CreateDevice( 0, sD3DSettings->D3DDeviceType, sPresentParameters->hDeviceWindow, dwBahaviorFlags, sPresentParameters, &pD3DDevice); if (FAILED(hResult)) return ERR; return OK; |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
HRESULT hResult; hResult = pD3DDevice->SetFVF(sD3DSettings->dwVertexFormat); // Renderstates setzen pD3DDevice->SetRenderState(D3DRS_LIGHTING, false); pD3DDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID); pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); pD3DDevice->SetRenderState(D3DRS_ZENABLE, true); pD3DDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL); // Projektionsmatrix float fWidth = (float)sD3DSettings->sPresentParameters.BackBufferWidth; float fHeight = (float)sD3DSettings->sPresentParameters.BackBufferHeight; setProjection(90.0f, fWidth / fHeight, 1.0f, 100.0f); |
Zitat von »"Klaus"«
Ich habe mal ein Problem gehabt, das sah genauso aus...
Da hatte sich das so gelöst:
In der Clear-Methode hatte ich einfach nur TARGET angegeben, und den ZBUFFER vergessen. Das könnte bei deinem unteren Bild auch recht gut hinkommen: Es wird gezeichnet und der Z-Buffer beschrieben. Ab dem zweiten Frame, für den der "Farb"-Puffer ja bei dir eindeutig gelcleart wird, schaffen nur noch kleine Teile (float-Ungenauigkeit?) den Z-Test , und werden gerendert.
Vielleicht hast du das ja einfach vergessen - ich hoffe, das hilft
Anonymous
unregistriert
Anonymous
unregistriert
Zitat
wenn du im windowed mode bist, dann kannst du dir das angeben von BackBufferWidth und height und count sparen, einfach BackBufferFormat = D3DFMT_UNKNOWN, dann sucht sich d3d alles weitere selbst zusammen. funktioniert allerdings nur mit windowed = true
das presentation interval kannst du zum ausschalten von VSync auf D3DPRESENT_INTERVAL_IMMEDIATE stellen, das bringt ein paar fps mehr, allerdings nimmst du damit grafikfehler in kauf. nur so zur info, war grad mal auf thema auf zfx
Werbeanzeige