Avatar billede limes_planum Praktikant
12. marts 2008 - 11:42 Der er 5 kommentarer og
1 løsning

Hvordan koder man eksempler fra MS' DirectX SDK?

I forbindelse med at lære at kode 3D i MS' XNA og C++ generelt, er det et must at kunne kode direkte i DirectX. I dokumentationen MS' DirectX SDK er der eksempler på, hvordan man kommer i gang.

Meget fint men jeg har ingen idé om jeg kan kode eksemplerne i MS Visual Studio 2005, og under hvilken filtype samt under hvilken en af filerne i solution...
Dette givet at jeg som allerede afprøvet, har oprettet en C++ Windows Forms Application, som opstartet indeholder en hel del forskellige filer.

Herunder ligger den mest sandsynlige .cpp-fil med det pre-indsatte kode:

// C_plus_DIRX_test1.cpp : main project file.

#include "stdafx.h"
#include "Form1.h"

using namespace C_plus_DIRX_test1;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);

    // Create the main window and run it
    Application::Run(gcnew Form1());
    return 0;
}

Hvordan skal jeg herefter indsætte SDK-eksemplet i ovennævnte eller i hele solutionet?
SDK-eksemplet:

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
    // Register the window class.
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
    GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
    "Direct3D Tutorial", NULL };

    RegisterClassEx( &wc );

    // Create the application's window.
    HWND hWnd = CreateWindow( "Direct3D Tutorial", "Direct3D Tutorial 01: CreateDevice",
    WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
    GetDesktopWindow(), NULL, wc.hInstance, NULL );

Indsat efter hinanden, brokker 'MS-VS-05'-compileren sig med ca. 20 fejl.
Avatar billede arne_v Ekspert
16. marts 2008 - 03:09 #1
[STAThreadAttribute]
int main(array<System::String ^> ^args)

er kode til en .NET managed C++ app (også kaldet C++/CLI).

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )

er kode til en Win32 GUI app altså native kode også kaldet unmanaged kode.

Det hænger ikke sammen.

Skal du skrive managed .NET kode eller native kode ?
Avatar billede limes_planum Praktikant
16. marts 2008 - 05:37 #2
Ja tænkte nok at SDK-eksemplerne stod i noget unmanaged - så i hvilket miljø kan jeg skrive og afprøve 'native kode'-eksemplerne? Har et filtype-valg der hedder; 'Win 32 project' under MS-VS-05 der skaber en ret omfattende predefineret solution med 10 forskellige filer..

NB.: Begynder på mit andet MS-certificerings-modul om en uge, kan være det nok er bedre at få det ind med skeer der i stedet - eller hvad?
Avatar billede arne_v Ekspert
16. marts 2008 - 17:19 #3
Win32 lyder rigtigt.
Avatar billede arne_v Ekspert
16. marts 2008 - 17:31 #4
Lidt googling siger dog at der er noget som hedder Managed DirectX (MDX) .
Avatar billede limes_planum Praktikant
21. marts 2008 - 11:07 #5
~Bider mig selv i halen...~
1. Startede med at købe bogen; "Microsoft XNA Unleashed" da en medstuderende på et MS 70-536 hold fortalte mig at man kunne programmere 3D forholdsvis let i MS nye XNA.
2. Denne og andre lignende bøger (har også efterfølgende erhvervet mig "Programming a multiplayer FPS in DirectX") opfordrede mig til at have/tilegne mig DirectX-erfaring.
3. Således opfordret har jeg prøvet at se hvad MS' DirectX SDK, har kunnet give mig.
4. Lettere forvirret over denne SDK's kode-eksempler opretter jeg dette spørgsmål.
5. Efter lidt ping-pong med dig finder jeg frem til, at der er en grund til at dokumentationen under MS' DirectX SDK ikke indeholder Managed DirectX (MDX) da: http://en.wikipedia.org/wiki/Managed_DirectX - forklarer at Managed DirectX (MDX) er overtaget af Microsoft XNA - :-S

Nå men efter således at have gået lidt i ring kunne det dog stadig være meget lækkert om du kender noget til, hvordan man mere konkret bruger den callback-opsætning i C++ de henviser til under SDK'ens dokumentation (kan du evt. downloade den?)?  Stien er:
DirectX Software Development Kit -> Programming Guide -> Programming with C/C++ -> Using Callback Functions.

Stadig uden at kunne overskue det ordentligt virker det for mig som om at denne callback-opsætning tillader at man indfletter native-kodestumperne i C/C++ og at man derfor kan bruge MS' udviklermiljøer til testning/læring af eksemplerne?
Avatar billede limes_planum Praktikant
27. juni 2008 - 15:13 #6
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester