Du bist nicht angemeldet.

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

1

16.07.2007, 19:00

Ruckeln beim Rendern in Dialog...

Hallo! :)

Ich komm nicht weiter und verzweifel langsam...
Ich hab mir Davids Framework geschnappt und wollte ein paar Dinge so ändern, daß ich in einen Dialog reinrendern kann... so, daß ich einige Eingabemöglichkeiten anbringen kann um Modelle zu laden und unterschiedlich zu texturieren... usw.

Problem an der Sache.... das Ding ruckelt, wie verrückt... ich komme sehr sehr abgehackt nur durch die Szene....

Das faszinierende dran, was vielleicht ein Wink für Profis sein könnte:

Sobald ich das Dialogfenster anklicke und ein paar Sekunden rumschiebe und dann die Maustaste wieder loslasse ist alles i.O. und alles läuft smooth.


Hier auch die Sourcen:

edit: (alter Link war schnarchlahm...)
http://www.yourfilehost.com/media.php?cat=other&file=Schraats_Bastelbox2b.rar


Wenn man Fraps anschmeisst, sieht man die FPS Zahl, die von 100FPS (Ja, es ruckelt mit 100FPS... das Problem liegt irgendwo anders??) nach dem Rumschieben auf 2400FPS hochschnellt bei mir.

Wär toll, wenn einer sehen würde/ahnen würde warum das so spukt.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

18.07.2007, 20:48

Edit:
Tschuldigung. Schon Verschoben.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

18.07.2007, 20:54

Poste mal bitte den code hier und nimm die cpp Tags. Danke

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

4

18.07.2007, 20:56

Vielleicht ist es einfach ein Bug im Framework? Das wurde ja soweit ich weiß in einer Nacht und Nebel Aktion programmiert und im Nachhinein nur noch vervollständigt.

5

20.07.2007, 15:36

Huch!

Wo kommen die Antworten denn plötzlich her? :)

Mhh... den kompletten Projektcode einzufügen...ich denke, das erschlägt jeden.

Hier (nochmal) ein (diesmal wirklich fixer) Download des Projekts:
http://www.stud.uni-karlsruhe.de/~utbv/Schraats_Bastelbox2b.rar

Tatsächlich könnt WIRKLICH ein Fehler drin sein. Die Ruckler hatte ich schon öfter bei den Beispieldateien... war aber nie reproduzierbar warum sie auftraten. Oft erst nach dem 3. Starten .... und nach dem x. Starten waren sie dann wieder weg...
Hier hab ich sie ständig.

Der Trick mit der Verschieben fnktioniert heute auch nicht mehr... beim 30. Verschiebeversuch dann mal. Gestern trat das Problem gar nicht auf.
(Verändert hab ich nix... nichtmal den Rechner neugestartet...immer Standby...)



Hier doch noch ein bißchen Code...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
//...

//Dialog erstellen


    g_hWindow/*hDlgRenderwin*/ = CreateDialog(GetModuleHandle(NULL),
        MAKEINTRESOURCE(IDD_DIALOG3),
        NULL,
        RenderProc);

    ShowWindow(g_hWindow, SW_SHOW);
//...


C-/C++-Quelltext

1
2
    Result = GetDirect3DParameters(&g_PresentParameters);
    g_PresentParameters.hDeviceWindow   = g_hWindow;


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
tbResult GetDirect3DParameters(D3DPRESENT_PARAMETERS* pOut)
{
    pOut->BackBufferWidth               = 180;
    pOut->BackBufferHeight              = 120;
    pOut->BackBufferFormat              = D3DFMT_X8R8G8B8;
    pOut->BackBufferCount               = 1;
    pOut->MultiSampleType               = D3DMULTISAMPLE_NONE;
    pOut->MultiSampleQuality            = 0;
    pOut->SwapEffect                    = D3DSWAPEFFECT_DISCARD;
    //pOut->hDeviceWindow               = g_hWindow;

    pOut->Windowed                      = TRUE;
    pOut->EnableAutoDepthStencil        = TRUE;
    pOut->AutoDepthStencilFormat        = D3DFMT_D24X8;
    pOut->Flags                         = 2; //wenn AutoDepthStencilFormat == D3DFMT_D16_LOCKABLE : D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL

    pOut->FullScreen_RefreshRateInHz    = 0;
    pOut->PresentationInterval          = D3DPRESENT_INTERVAL_IMMEDIATE; //Windowed: D3DPRESENT_INTERVAL_IMMEDIATE, Fullscreen: D3DPRESENT_INTERVAL_ONE;


    int iResult = 0;

     
    if(iResult == 0) return TB_OK;                  // Alles OK!

    
    else if(iResult == 1) return TB_ERROR;          // Fehler!

    else /*if(iResult == 2)*/ return TB_CANCELED;   // Dialog abgebrochen

        
}


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
tbResult InitDirect3D(D3DPRESENT_PARAMETERS* pParameters,
                      HWND hWindow)
{
    HRESULT                 hResult;
//  D3DPRESENT_PARAMETERS   PresentParams;



    // Parameter prüfen

    if(pParameters == NULL) TB_ERROR_NULL_POINTER("pParameters", TB_ERROR);


    // Globale IDirect3D9-Schnittstelle erzeugen

    g_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    if(g_pD3D == NULL) TB_ERROR("IDirect3D9-Schnittstelle konnte nicht erstellt werden!", TB_ERROR);

//  TB_INFO("IDirect3D9-Schnittstelle wurde erzeugt!");


    pParameters->hDeviceWindow = hWindow;

    // Und nun die Geräteschnittstelle generieren

    if(FAILED(hResult = g_pD3D->CreateDevice(/*pParameters->iAdapter*/0,
                                             D3DDEVTYPE_HAL,
                                             hWindow,
                                             D3DCREATE_HARDWARE_VERTEXPROCESSING,
                                             pParameters,
                                             &g_pD3DDevice)))
    {
        // Fehler beim Generieren der Schnittstelle!

        ExitDirect3D();
        TB_ERROR_DIRECTX("g_pD3D->CreateDevice", hResult, TB_ERROR);
    }
    
    // Es hat geklappt!

    TB_INFO("Geräteschnittstelle wurde generiert!");

    // Cursor im Vollbildmodus ausblenden

    //if(!pParameters->bWindowed) ShowCursor(FALSE);


    return TB_OK;
}

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

6

30.07.2007, 12:16

dann solltest du den rechner vllt doch mal neustarten, wenn er immer standby ist...


Socke

Werbeanzeige