none
Fehlende Headerdateien RRS feed

  • Frage

  • Ich habe versucht ein DirectX-Programm nach einem Tutorial zu machen. Mein Compiler (Visual Express C++ 2010) kann aber keine D3DX-Dateien(d3dx11,d3dx10,d3dx11core) einbinden, weil sie nicht vorhanden sind.

    Bei dem Tutrial wird auch dieser Compiler verwendet, also müsste er diese Dateien auch besitzen, tut er aber nicht.

     

    Ich hoffe dass mir jmd helfen kann

     

    Danke im Voraus

    Mittwoch, 10. August 2011 09:53

Antworten

Alle Antworten

  • Ich vermute eher, dass Du die DirectX SDK Dateien noch installieren musst!

    Siehe hier http://msdn.microsoft.com/de-de/directx


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Mittwoch, 10. August 2011 10:33
  • Diese hab ich schon(June 2010), aber ich kann nur d3d10 u. d3d11 einbinden. Den Quellcode der Dateien von d3dx10 u. 11 hab ich kopiert und eigene headerdateien erstellt (Code aus I-Net), aber diese binden weitere header-dateien ein, die ich nicht habe.

     

    Ich weiß nicht ob das SDK allein durch die Installation C++ dient

    Mittwoch, 10. August 2011 11:14
  • ... aber diese binden weitere header-dateien ein, die ich nicht habe.

    Was für Header?

    Ich weiß nicht ob das SDK allein durch die Installation C++ dient

    Eigentlich dienen diese SDKs ausschließlich der C++ Entwicklung.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Mittwoch, 10. August 2011 11:31
  • d3dx11core.h"
     "d3dx11tex.h"
     "d3dx11async.h"

     

    Ist mein June 2010-Kit überhaupt das richtige?

    Kann ich jetzt mit dem VC++ Express programmieren oder muss ich speziell die Dateien angeben

     

    Quellcode von einem Programm

    // include the basic windows header files and the Direct3D header files
    #include <windows.h>
    #include <windowsx.h>
    #include <d3d11.h>
    #include "d3dx11.h"
    #include "d3dx10.h"
    
    // include the Direct3D Library file
    #pragma comment (lib, "d3d11.lib")
    #pragma comment (lib, "d3dx11.lib")
    #pragma comment (lib, "d3dx10.lib")
    
    // global declarations
    IDXGISwapChain *swapchain;       // the pointer to the swap chain interface
    ID3D11Device *dev;           // the pointer to our Direct3D device interface
    ID3D11DeviceContext *devcon;      // the pointer to our Direct3D device context
    
    // function prototypes
    void InitD3D(HWND hWnd);  // sets up and initializes Direct3D
    void CleanD3D(void);    // closes Direct3D and releases memory
    
    // the WindowProc function prototype
    LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
    
    
    // the entry point for any Windows program
    int WINAPI WinMain(HINSTANCE hInstance,
              HINSTANCE hPrevInstance,
              LPSTR lpCmdLine,
              int nCmdShow)
    {
      HWND hWnd;
      WNDCLASSEX wc;
    
      ZeroMemory(&wc, sizeof(WNDCLASSEX));
    
      wc.cbSize = sizeof(WNDCLASSEX);
      wc.style = CS_HREDRAW | CS_VREDRAW;
      wc.lpfnWndProc = WindowProc;
      wc.hInstance = hInstance;
      wc.hCursor = LoadCursor(NULL, IDC_ARROW);
      wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
      wc.lpszClassName = L"WindowClass";
    
      RegisterClassEx(&wc);
    
      RECT wr = {0, 0, 800, 600};
      AdjustWindowRect(&wr, WS_OVERLAPPEDWINDOW, FALSE);
    
      hWnd = CreateWindowEx(NULL,
                 L"WindowClass",
                 L"Our First Direct3D Program",
                 WS_OVERLAPPEDWINDOW,
                 300,
                 300,
                 wr.right - wr.left,
                 wr.bottom - wr.top,
                 NULL,
                 NULL,
                 hInstance,
                 NULL);
    
      ShowWindow(hWnd, nCmdShow);
    
      // set up and initialize Direct3D
      InitD3D(hWnd);
    
      // enter the main loop:
    
      MSG msg;
    
      while(TRUE)
      {
        if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
          TranslateMessage(&msg);
          DispatchMessage(&msg);
    
          if(msg.message == WM_QUIT)
            break;
        }
        else
        {
          // Run game code here
          // ...
          // ...
        }
      }
    
      // clean up DirectX and COM
      CleanD3D();
    
      return msg.wParam;
    }
    
    
    // this is the main message handler for the program
    LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
      switch(message)
      {
        case WM_DESTROY:
          {
            PostQuitMessage(0);
            return 0;
          } break;
      }
    
      return DefWindowProc (hWnd, message, wParam, lParam);
    }
    
    
    // this function initializes and prepares Direct3D for use
    void InitD3D(HWND hWnd)
    {
      // create a struct to hold information about the swap chain
      DXGI_SWAP_CHAIN_DESC scd;
    
      // clear out the struct for use
      ZeroMemory(&scd, sizeof(DXGI_SWAP_CHAIN_DESC));
    
      // fill the swap chain description struct
      scd.BufferCount = 1;                  // one back buffer
      scd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;   // use 32-bit color
      scd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;   // how swap chain is to be used
      scd.OutputWindow = hWnd;                // the window to be used
      scd.SampleDesc.Count = 4;                // how many multisamples
      scd.Windowed = TRUE;                  // windowed/full-screen mode
    
      // create a device, device context and swap chain using the information in the scd struct
      D3D11CreateDeviceAndSwapChain(NULL,
                     D3D_DRIVER_TYPE_HARDWARE,
                     NULL,
                     NULL,
                     NULL,
                     NULL,
                     D3D11_SDK_VERSION,
                     &scd,
                     &swapchain,
                     &dev,
                     NULL,
                     &devcon);
    }
    
    
    // this is the function that cleans up Direct3D and COM
    void CleanD3D(void)
    {
      // close and release all existing COM objects
      swapchain->Release();
      dev->Release();
      devcon->Release();
    } 
    

    Da sind jetzt "meine" Header muss ich sie so bloß mit <> oder mit irgendeiner Pfadangabe einbinden

    Mittwoch, 10. August 2011 11:36
  • Hat sich erledigt, hab vergessen das SDK-Verzeichnis unter Projekt/Eigenschaften anzugeben
    • Als Antwort markiert birdfreeyahoo Mittwoch, 10. August 2011 14:18
    • Tag als Antwort aufgehoben birdfreeyahoo Mittwoch, 10. August 2011 15:36
    Mittwoch, 10. August 2011 14:18
  • Jetzt neues Problem: die .lib können nicht gelesen werden
    • Als Antwort markiert birdfreeyahoo Mittwoch, 10. August 2011 22:04
    Mittwoch, 10. August 2011 21:42
  • Vielleicht das gleiche Problem. Im Linker musst Du evtl. auch das SDK Lib Verzeichnis angeben.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Donnerstag, 11. August 2011 06:02