Ergebnis 1 bis 12 von 12

Thema: C++ - Unerwartetes Dateiende gefunden in zeile 1

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Code:
     Inwiefern hängen LPDIRECTDRAWSURFACE7 und 'CSurface zusammen? Vererbte klassen?
    Weiß ich auch nicht. Wird in meiner Referenz nirgends erwähnt, naja, ich mach es jetzt eh anders, ich speichere die Tiles in einem CSurface-Array, sollte eh besser funktionieren, aber trotzdem danke für die Hilfe!

  2. #2
    ...

    DXSDK 7... Wobei ich gar nicht erkennen kann, was daran DirectX ist. Z.B. seh ich für DirectX 7 kein DirectDrawCreateEx oder SetDisplayMode. LPDIRECTDRAWSURFACE7 ginge schon Richtung DirectX. Zudem müsstest du von LPDIRECTDRAWSURFACE7 keinen Pointer machen, das vorgestellte LP will darauf hinweisen, dass es ein Pointer ist.

    and Btw. in DirectX hat man es normalerweise nicht nötig mit Tiles zu arbeiten. Ich würde sowieso auf das DXSDK 9 oder wenigstens 8 umsteigen, da ist alles ein bischen anders mit den Interfaces, aber das Prinzip ist das gleiche.

    Geändert von Drakes (19.10.2007 um 08:50 Uhr)

  3. #3
    ähmm... ich benutze das neueste direct x sdk...
    was genau meinst du soll anders sein?

  4. #4
    Tut mir leid, aber das kann ich dir einfach nicht glauben, seit DirectX 8 "gibt es directdraw nicht mehr"(es ist in Direct3D enthalten). Eine aktuelle Einbindung der Headerdateien sieht so aus:
    Code:
    #include <d3d9.h>
    #include <d3dx9.h>
    #include <dxerr.h>
    bzw. mit 10 ersetzt, falls man schon mit DirectX 10 programmiert.

    ok ich probier mal zu zeigen wie man DirectX initialisiert:
    Code:
    // Variablen
    LPDIRECT3D9 lpD3D = NULL;
    LPDIRECT3DDEVICE9 lpD3DDevice = NULL;
    Code:
    // Initialisierung
    if( NULL == ( lpD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
            return Fehler("Direct3DCreate9() fehlgeschlagen!");
    
        D3DPRESENT_PARAMETERS d3dpp;
        ZeroMemory( &d3dpp, sizeof(d3dpp) );
        d3dpp.Windowed = false; // für Fullscreen
        d3dpp.hDeviceWindow = hWnd;
        d3dpp.BackBufferWidth = /* Auflösungsbreite */;
        d3dpp.BackBufferHeight = /* Auflösungshöhe */;
        d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP; // naja hier bin ich mir nicht mehr ganz sicher
        d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
    
        HRESULT hResult;
        if( FAILED( hResult = lpD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                      D3DCREATE_HARDWARE_VERTEXPROCESSING,
                                      &d3dpp, &lpD3DDevice ) ) )
        {
            DXTrace(__FILE__,__LINE__,hResult,NULL,true);
            return /*irgendwas, kommt drauf an, was man für ein System hat*/;
        }
    Code:
    // freigeben
    if(NULL != lpD3DDevice)
        {
            lpD3DDevice->Release();
            lpD3DDevice = NULL;
        }
        if(NULL != lpD3D)
        {
            lpD3D->Release();
            lpD3D = NULL;
        }
    am Besten packt man dies in eine Klasse.

    Geändert von Drakes (19.10.2007 um 16:03 Uhr)

  5. #5
    Naja, dabei ist DirectDraw eigentlich schon, es wird nur nicht mehr weiterentwickelt. Ich hab ein paar Beispiele, die DirectDraw verwenden kompiliert und die gingen mit dem neuesten SDK ohne Probleme.
    Ich hab mich jetzt ein wenig umgehört und erfahren, dass Direct3D hardwarebeschleunigt ist und DirectDraw nicht, kann mir jemand vllt ein gutes Tutorial empfehlen, welches 2D Programmierung mit Direct3D erklärt, ich will nicht extra alles über 3D Programmierung lernen, um auch was in 2D zu erstellen, da mir das jetzt doch noch zu kompliziert ist.

  6. #6
    Zitat Zitat von Drakes Beitrag anzeigen
    Tut mir leid, aber das kann ich dir einfach nicht glauben, seit DirectX 8 "gibt es directdraw nicht mehr"(es ist in Direct3D enthalten). Eine aktuelle Einbindung der Headerdateien sieht so aus:
    Also vom Hören-Sagen her hieß es mal, dass DirectDraw (bzw alle 2D Operationen) seit der 7er Version gleichgeblieben ist. Das heißt, bei DirectX8 und die folgenden wurden lediglich die 3D Teile ausgetauscht und verbessert. Demnach wird selbst beim 9er DirectX in Verwendung mit 2D Grafik noch die Bestandteile vom 7er verwendet, die sich seitdem nicht verändert haben. Entsprechend kann es gut sein, dass dort von Dx7 die Rede ist, auch wenn er Dx9 verwendet. Aber sicher bin ich mir bei all dem nicht.

    Verwendet lieber OpenGL, ist eh besser.

  7. #7
    Zitat Zitat von Ynnus Beitrag anzeigen
    Also vom Hören-Sagen her hieß es mal, dass DirectDraw (bzw alle 2D Operationen) seit der 7er Version gleichgeblieben ist. Das heißt, bei DirectX8 und die folgenden wurden lediglich die 3D Teile ausgetauscht und verbessert. Demnach wird selbst beim 9er DirectX in Verwendung mit 2D Grafik noch die Bestandteile vom 7er verwendet, die sich seitdem nicht verändert haben. Entsprechend kann es gut sein, dass dort von Dx7 die Rede ist, auch wenn er Dx9 verwendet. Aber sicher bin ich mir bei all dem nicht.
    So ist es ich glaube, bei jedem DirectX SDK sind die Headerdateien von den älteren Versionen auch noch drin.

    Zitat Zitat von Ynnus Beitrag anzeigen
    Verwendet lieber OpenGL, ist eh besser.
    Nimm besser ne Engine die DirectX unterschtützt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •