JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=034d2ebff83758c634006c49e66f29b6Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

vc++ 2005 und dx sdk

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Bolle52
Mini JLI'ler



Anmeldedatum: 13.07.2007
Beiträge: 24

Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 14:25    Titel: vc++ 2005 und dx sdk Antworten mit Zitat

hi @ all

wie binde ich die directx sdk vom buch spieleprogrammierung mit directx in vc++ von microsoft ein?

danke schon mal für antworten

mfg jan
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
manu
Super JLI'ler


Alter: 34
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 15:37    Titel: Antworten mit Zitat

ähm.. das steht doch mehr als genau im buch beschrieben Smile
Um genau zu sein, wird es hier wohl auch niemand besser erklären können als es sowieso schon im Buch steht..

du kannst ja nochmal nachlesen und dann wenn du irgendwo explizit doch nicht weiterkommst nochmal speziell fragen Smile

grüße
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bolle52
Mini JLI'ler



Anmeldedatum: 13.07.2007
Beiträge: 24

Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 16:30    Titel: Antworten mit Zitat

im buch steht es mit der ide von code blocks drin, aber nicht wie man die headers und die lib von der dx sdk in vc++ 2005 ee einbindet. sonst hätte ich net gefragt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
manu
Super JLI'ler


Alter: 34
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 16:33    Titel: Antworten mit Zitat

Hm ok. sorry. Dann hab ich wohl das falsche Buch^^

Extras ==> Optionen == > Projekte und Projektmappen ==> VC++ verzeichnisse ==> Und dort halt unter Inludedateien bzw. Bibliotheksdateien
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bolle52
Mini JLI'ler



Anmeldedatum: 13.07.2007
Beiträge: 24

Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 17:11    Titel: Antworten mit Zitat

ich habs so gemacht wie du es beschrieben hast und es tritt folgender fehler auf

Code:
fatal error C1083: Datei (Include) kann nicht geöffnet werden: "d3d9.h": No such file or directory
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
manu
Super JLI'ler


Alter: 34
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 17:19    Titel: Antworten mit Zitat

Sprich du hast der Liste "Includedateien" das verzeichnis include hinzugefügt?

bei mir ist es
C:\Programme\Microsoft DirectX SDK (August 2006)\Include

du hast warscheinlich ein neueres sdk.. aber das prinzip ist ja gleich..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bolle52
Mini JLI'ler



Anmeldedatum: 13.07.2007
Beiträge: 24

Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 17:30    Titel: Antworten mit Zitat

lag am falschen konfigurieren, müsste es jetzt richtig haben.
jetzt kommt wieder eine andere fehlermeldung

Code:
C:\Programme\Microsoft DirectX 9.0 SDK (October 2005)\Include\d3d9.h(40) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "objbase.h": No such file or directory


die objbase.h habe ich net auf meinem rechner
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
KI
JLI Master


Alter: 38
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 18:48    Titel: Antworten mit Zitat

objbase.h gehört zum PlatformSDK und müsste eigentlich bei Visual C++ dabei sein.
Welche Version vom Visual C++ Editor hast du denn installiert?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Bolle52
Mini JLI'ler



Anmeldedatum: 13.07.2007
Beiträge: 24

Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 20:04    Titel: Antworten mit Zitat

ich benutze visual c++ 2005 express edition von microsoft und die directx sdk vom oktober 2005. ich habe die hdd nach dieser headerdatei durchsucht und keinen erfolg gehabt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 20:36    Titel: Antworten mit Zitat

hast du VS schon komplett konfiguriert? Check doch mal, ob du die folgenden Einstellungen schon vorgenommen hast: PSDK in VC++ 2005
Danach solltest du gucken ob du das DXSDK ähnlich integriert hast:
Zitat:
What I did:

- in: Project - MyThirdWindow - Property pages _ Linker - Input: I added d3dx9.lib and d3d9.lib

- in : Tools - Options - Project and Solutions - VC++ Directories , I made sure to add :

in Executable files: $(DXSK_DIR)Utilities\Bin\x86

in Include Files: $(DXSDK_DIR)include

in Library Files: $(DXSDK_DIR)lib\86


Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Bolle52
Mini JLI'ler



Anmeldedatum: 13.07.2007
Beiträge: 24

Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 21:55    Titel: Antworten mit Zitat

jetzt meckert er wieder herum

Code:
Compiling...
main.cpp
.\main.cpp(238) : warning C4996: 'strcpy' was declared deprecated
        C:\Programme\Microsoft Visual Studio 8\VC\include\string.h(73) : see declaration of 'strcpy'
        Message: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
Linking...
main.obj : error LNK2019: unresolved external symbol _Direct3DCreate9@4 referenced in function "int __cdecl InitDirect3D(struct HWND__ *)" (?InitDirect3D@@YAHPAUHWND__@@@Z)
main.obj : error LNK2019: unresolved external symbol _D3DXCreateFontIndirectA@12 referenced in function "void __cdecl CreateD3DFont(void)" (?CreateD3DFont@@YAXXZ)


und das ist der originalcode vom buch

<edit TLoP>
cpp-Tags tragen zur Lesbarkeit bei
</edit TLoP>

CPP:
// Dieses Programm zeigt, wie Text mit DirectX Graphics ausgegeben wird


// Headerdateien
#include <d3d9.h>
#include <d3dx9.h>

// Anwendungsfenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance);

// Callback Funktion zur Nachrichtenbehandlung
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);

// Funktion zur Initialisierung von Direct3D
BOOL InitDirect3D(HWND hWnd);

// Direct3D-Objekte wieder freigeben
void CleanUpDirect3D(void);

// Direct3D-Font erzeugen
void CreateD3DFont(void);

// Zeiger auf das Direct3D-Objekt (Interface)
LPDIRECT3D9       lpD3D       = NULL;

// Zeiger auf das Direct3D-Device
LPDIRECT3DDEVICE9 lpD3DDevice = NULL;

// Zeiger auf das Direct3D-Font-Objekt
LPD3DXFONT        lpD3DFont   = NULL;

// Das Fensterhandle
HWND hWnd = 0;

// Windows main-Funktion
int WINAPI WinMain(HINSTANCE hInstance,      // Handle der Programminstanz
                   HINSTANCE hPrevInstance,  // Handle der letzten Instanz
                   LPSTR lpCmdLine,          // Kommandozeile
                   int nCmdShow)             // Art wie das Fenster angezeigt werden soll
{
    // Fenster erzeugen und Handle speichern
    hWnd = CreateMainWindow(hInstance);

    // Wenn der Rueckgabewert 0 ist, ist ein Fehler aufgetreten
    if(0 == hWnd)
    {
        MessageBox(0, "Fenster konnte nicht erzeugt werden", "Fehler", MB_OK);
        return -1;
    }

    // Direct3D initialisieren
    if(!InitDirect3D(hWnd))
    {
      return -1;
   }

    // Schrift erzeugen
    CreateD3DFont();

   // Struktur, in der Informationen zur Nachricht gespeichert werden
    MSG msg;

    // Diese Schleife laeuft bis die Nachricht WM_QUIT empfangen wird
    while(GetMessage(&msg, NULL, 0, 0))
   {
        // Nachricht an die Callbackfunktion senden
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    // Freigeben der Objekte
    CleanUpDirect3D();

    // Rückgabewert an Windows
    return 0;
}

// Fenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance)
{
    WNDCLASSEX wndClass =
    {
        sizeof(WNDCLASSEX),                                 // Groesse angeben
        CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW,    // Standardstile
        MessageHandler,                                     // Callback-Funktion
        0,                                                  // Zusaetzliche Angaben
        0,                                                  // nicht benoetigt
        hInstance,                                          // Anwendungsinstanz
        LoadIcon(NULL, IDI_WINLOGO),                        // Windows-Logo
        LoadCursor(NULL, IDC_ARROW),                        // Normaler Cursor
        (HBRUSH)GetStockObject(WHITE_BRUSH),                // Weisser Pinsel
        NULL,                                               // kein Menue
        "WindowClass",                                      // Der Name der Klasse
        LoadIcon(NULL, IDI_WINLOGO)                         // Windows Logo
    };


    // Klasse registrieren
    RegisterClassEx(&wndClass);

    return CreateWindowEx(NULL,                   // Keine erweiterten Stile nutzen
                          "WindowClass",          // Klassenname
                          "D3DDrawText",          // Fenstertitel
                          WS_OVERLAPPEDWINDOW |   // Fenster
                          WS_VISIBLE,             // Eigenschaften
                          50, 50, 800, 600,       // Anfangsposition und Groesse
                          NULL,                   // Handle des Elternfensters
                          NULL,                   // Handle des Menues
                          hInstance,              // Anwendungsinstanz
                          NULL);                  // wird nicht benoetigt
}


// Diese Funktion wird von Windows aufgrufen, wenn
// eine Nachricht fuer Ihr Programm vorliegt
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    // Farbe fuer die Fuellung des Backbuffer festlegen
    D3DCOLOR ClearColor = D3DCOLOR_XRGB(0, 0, 0xFF);

    // testen, um welche Nachticht es sich handelt
    switch(msg)
    {
        // Programm beenden, wenn das Fenster
        // geschlossen wird
        case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
             break;

        case WM_KEYDOWN:
               switch(wParam)
               {
                 // Wenn ESC gedrückt, Anwendung beenden
                 case VK_ESCAPE:
                         DestroyWindow(hWnd);
                      break;
               }
             break;

       case WM_PAINT:

               D3DCOLOR ClearColor = D3DCOLOR_XRGB(0, 0, 0xFF);
               D3DCOLOR TextColor  = D3DCOLOR_XRGB(0xFF, 0, 0);

               // Rechteck anlegen, nur die linke, obere
               // Koordinate festlegen, die andere wird
               // berechnet

               // Puffer mit blau fuellen
               lpD3DDevice->Clear(0, 0,
                                  D3DCLEAR_TARGET,
                                  ClearColor,
                                  0, 0);

               RECT r = { 100, 100, 0, 0 };

               lpD3DDevice->BeginScene();

               // Groessee des Rechtecks berechnen
               lpD3DFont->DrawText(NULL,
                                   "Hallo Direct3D",
                                   -1,
                                   &r,
                                   DT_CALCRECT,
                                   TextColor);

               // Text ausgeben
               lpD3DFont->DrawText(NULL,
                                   "Hallo Direct3D",
                                   -1,
                                   &r,
                                   DT_CENTER,
                                   TextColor);

               lpD3DDevice->EndScene();

               // Szene anzeigen
               lpD3DDevice->Present(0, 0, 0, 0);

             break;

    }

    // Standardnachrichtenverarbeitung von Windows
    return DefWindowProc(hwnd, msg, wParam, lParam);
}


// Direct3D initialisieren
BOOL InitDirect3D(HWND hWnd)
{
    // Direct3D-Objekt erzeugen
    lpD3D = Direct3DCreate9(D3D_SDK_VERSION);

    if(NULL == lpD3D)
    {
     // Fehler, D3D-Objekt wurde nicht erzeugt
     return FALSE;
    }

    // Parameter für den Modus festlegen
    D3DPRESENT_PARAMETERS PParams;
    ZeroMemory(&PParams, sizeof(PParams));

    PParams.SwapEffect     = D3DSWAPEFFECT_DISCARD;
    PParams.hDeviceWindow  = hWnd;
    PParams.Windowed       = TRUE;

    PParams.BackBufferWidth  = 800;
    PParams.BackBufferHeight = 600;
    PParams.BackBufferFormat = D3DFMT_A8R8G8B8;

    // Direct3D-Geraet anlegen
    if(FAILED(lpD3D->CreateDevice(
                                 D3DADAPTER_DEFAULT,
                                 D3DDEVTYPE_HAL,
                                 hWnd,
                                 D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                 &PParams,
                                 &lpD3DDevice)))
    {
        // Fehler, kann Geraet nicht anlegen
        return FALSE;
    }

   return TRUE;
}

void CreateD3DFont(void)
{
  // Struktur fuer die Beschreibung der Schriftart
  // anlegen und Elemente mit 0 initialisieren
  D3DXFONT_DESC FontDesc = { 0 };

  // das Element FaceName muss den Namen der
  // gewuenschten Schriftart enthalten
  strcpy(FontDesc.FaceName, "Arial");

  // nach erfolgreichem Aufruf zeigt lpD3DFont
  // auf ein Objekt vom Typ D3DXFont
  D3DXCreateFontIndirect(lpD3DDevice,
                         &FontDesc,
                         &lpD3DFont);
}


// Direct3D Objekte freigeben
void CleanUpDirect3D(void)
{
    // testen, ob die Objekt angelegt
    // wurden und ggf. freigeben

    if(NULL != lpD3DFont)
    {
        lpD3DFont->Release();
        lpD3DFont = NULL;
    }

    if(NULL != lpD3DDevice)
    {
        lpD3DDevice->Release();
        lpD3DDevice = NULL;
    }

    if(NULL != lpD3D)
    {
        lpD3D->Release();
        lpD3D = NULL;
    }
}


wo liegt denn der fehler jetzt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 22:05    Titel: Antworten mit Zitat

der fehler liegt darin, dass du vergessen hast bestimmte libs einzubinden. Es müsste sich sogar genau um die libs handeln, die ich oben zitiert hab:
Zitat:
in: Project - [My project] - Property pages _ Linker - Input: I added d3dx9.lib and d3d9.lib
hättest du das gelesen und ausgeführt wäre das Problem erspart geblieben (es sei denn du hast es gemacht und unter der falschen Configuration eingegeben). Du musst dann ggf. noch andere Libs einbinden, wenn im Buch darauf hingewiesen wird.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Bolle52
Mini JLI'ler



Anmeldedatum: 13.07.2007
Beiträge: 24

Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 22:48    Titel: Antworten mit Zitat

danke für deine hilfe es klappt jetzt Very Happy Very Happy Very Happy .

muss ich jetzt jedes mal wenn ich ein neues dx prog. schreibe die libs unter den programmconfigs neu eingeben?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 13.07.2007, 22:59    Titel: Antworten mit Zitat

nein, musst du nicht. du kannst sie zu den Standardlibs hinzufügen; das hat aber den Nachteil dass sie deine .exe unnötig aufblähen wenn du mal kein DX-Projekt schreibst wo du sie brauchst. Oder du nimmst sie dann in diesen Fällen extra raus.

Naja, wenn du das aber trotzdem willst, dann musst du die libs in C:\Programme\Microsoft Visual Studio 8\VC\VCProjectDefaults\corewin_express.vsprops unter Additional Dependencies="... hinzufügen.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum