SimpleDX11 Projekt
SimpleDX11 Projekt
Hiho allerseits,
EDIT4:
Habe es auf Interfaces (keine COM) umgestellt und die Verzeichnisstruktur geändert.
Ich denke so ist der Aufbau ganz ok und es lässt sich damit Arbeiten
Aktuelle Demos:
InitDirectX11, FirstTriangle, TriangleTexture & DiffuseLighting
ToDo:
- Generell fehlende Funktionalität hinzufügen (ist ja noch im absoluten alpha Stadium)
vor allem die 2D Funktionalität
- Mehr code Kommentare und anlegen einer Hilfe
EDIT3:
Nach einigen Überlegungen hin und her zwischen C++ oder rein PB ist das ganze nun ein reines PB
Projeckt und auch keine lib mehr sondern eine sammlung an PB proceduren zu einfacheren nutzung
von DirectX11 in PB.
Es kann immernoch nicht wirklich viel auser einen DX11 Screen erstellen und ein einfaches Dreieck rendern.
Die aktuelle version gibt es hier SimpleDX11
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Orginal Topic:
ich habe voriges Jahr mal angefangen mich in ein paar DirectX11 tutorials einzulesen und mir eine kleine dll zu
schreiben leider hatte ich nie die Zeit das mal weiter zu verfolgen, bis vor ein paar tagen.
Ich habe mich nun wieder drann gemacht und das ganze nicht als dll sondern als *.lib umzusetzen.
Können tut das ganze noch nicht viel auser Informationen der Adapter zu sammeln und einen DX11 Screen
zu Initialisieren aber mit der Zeit werden es hoffentlich ein paar mehr funktionen.
Ich poste es hier eigentlich nur schonmal damit fall ihr lust hab es testen könnt und mir Bugs meldet.
Es sind noch nicht alzuviele befehle aber lieber zu früh nach fehlern gesucht als zu spät.
Das ganze ist erst in Version 0.1 ^^ also nicht zuviel erwarten da wird mann nur entäuscht. ^_^
Da ich durch meine Arbeit nicht allzuviel Zeit habe werden Updates wohl eher sehr sporadisch erscheinen.
Vorab um die lib zu nutzen brauch ihr das "Microsoft DirectX SDK (June 2010)" & "Microsoft Visual Studio 10.0"
Hier mal der link zur Lib die liegt im release ordner der zip Datei.
Ich habe mal den C++ Code beigelegt falls es jemanden interessiert.
EDIT2: alten Source gelöscht
EDIT4:
Habe es auf Interfaces (keine COM) umgestellt und die Verzeichnisstruktur geändert.
Ich denke so ist der Aufbau ganz ok und es lässt sich damit Arbeiten
Aktuelle Demos:
InitDirectX11, FirstTriangle, TriangleTexture & DiffuseLighting
ToDo:
- Generell fehlende Funktionalität hinzufügen (ist ja noch im absoluten alpha Stadium)
vor allem die 2D Funktionalität
- Mehr code Kommentare und anlegen einer Hilfe
EDIT3:
Nach einigen Überlegungen hin und her zwischen C++ oder rein PB ist das ganze nun ein reines PB
Projeckt und auch keine lib mehr sondern eine sammlung an PB proceduren zu einfacheren nutzung
von DirectX11 in PB.
Es kann immernoch nicht wirklich viel auser einen DX11 Screen erstellen und ein einfaches Dreieck rendern.
Die aktuelle version gibt es hier SimpleDX11
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Orginal Topic:
ich habe voriges Jahr mal angefangen mich in ein paar DirectX11 tutorials einzulesen und mir eine kleine dll zu
schreiben leider hatte ich nie die Zeit das mal weiter zu verfolgen, bis vor ein paar tagen.
Ich habe mich nun wieder drann gemacht und das ganze nicht als dll sondern als *.lib umzusetzen.
Können tut das ganze noch nicht viel auser Informationen der Adapter zu sammeln und einen DX11 Screen
zu Initialisieren aber mit der Zeit werden es hoffentlich ein paar mehr funktionen.
Ich poste es hier eigentlich nur schonmal damit fall ihr lust hab es testen könnt und mir Bugs meldet.
Es sind noch nicht alzuviele befehle aber lieber zu früh nach fehlern gesucht als zu spät.
Das ganze ist erst in Version 0.1 ^^ also nicht zuviel erwarten da wird mann nur entäuscht. ^_^
Da ich durch meine Arbeit nicht allzuviel Zeit habe werden Updates wohl eher sehr sporadisch erscheinen.
Vorab um die lib zu nutzen brauch ihr das "Microsoft DirectX SDK (June 2010)" & "Microsoft Visual Studio 10.0"
Hier mal der link zur Lib die liegt im release ordner der zip Datei.
Ich habe mal den C++ Code beigelegt falls es jemanden interessiert.
EDIT2: alten Source gelöscht
Zuletzt geändert von Nero am 30.08.2013 14:56, insgesamt 6-mal geändert.
Re: SimpleDX11 lib Projekt
Habe mich heute dazu entschieden Directx11 direct aus PB heraus zu Initialisieren und somit
wird die seperate lib überflüssig.
Die lib war schon über 1MB groß nach dem Kompilieren was nicht wirklich toll ist
Das ganze aus PB heraus hat mit selben funktions umfang (sowenig es auch ist >_>)
nur noch 27kb, ich denke mal das ist ne verbesserung *g*
Habe die zip Datei geändert und neu hochgeladen
SimpleDX11
Das ganze sieht im Code so aus
wird die seperate lib überflüssig.
Die lib war schon über 1MB groß nach dem Kompilieren was nicht wirklich toll ist
Das ganze aus PB heraus hat mit selben funktions umfang (sowenig es auch ist >_>)
nur noch 27kb, ich denke mal das ist ne verbesserung *g*
Habe die zip Datei geändert und neu hochgeladen
SimpleDX11
Das ganze sieht im Code so aus
Code: Alles auswählen
;
; SimpleDX11 ver. 0.01
;
; Autor: Nero
;
;
; Danke an Danilo
Procedure _ExamineKeyboard()
DisableDebugger
Protected retVal = ExamineKeyboard()
EnableDebugger
ProcedureReturn retVal
EndProcedure
Procedure _KeyboardPushed(Const.l)
DisableDebugger
Protected retVal = KeyboardPushed(Const)
EnableDebugger
ProcedureReturn retVal
EndProcedure
Macro ExamineKeyboard()
_ExamineKeyboard()
EndMacro
Macro KeyboardPushed(A)
_KeyboardPushed(A)
EndMacro
;//////////////////////////////////////////
Procedure.f AlphaCF(Color)
tmpC.l = ((Color >> 24) & $ff)
ProcedureReturn tmpC / 255
EndProcedure
Procedure.f BlueCF(Color)
tmpC.l = ((Color >> 16) & $ff)
ProcedureReturn tmpC / 255
EndProcedure
Procedure.f GreenCF(Color)
tmpC.l = ((Color >> 8) & $ff)
ProcedureReturn tmpC / 255
EndProcedure
Procedure.f RedCF(Color)
tmpC.l = (Color & $ff)
ProcedureReturn tmpC / 255
EndProcedure
If Not InitKeyboard()
MessageRequester("Fehler", "Die Tastatur konnte nicht initialisiert werden!")
End
EndIf
XIncludeFile "SimpleDX11_DataSection.pb"
XIncludeFile "SimpleDX11_Imports.pb"
XIncludeFile "SimpleDX11_Structures.pb"
XIncludeFile "SimpleDX11_Interfaces.pb"
#Window = 0
WID.l
If OpenWindow(#Window, 50, 200, 800, 600,"Test Simple DirectX 11 Screen (Device 1)",#PB_Window_SystemMenu | #PB_Window_SizeGadget)
WID = WindowID(#Window)
Else
MessageRequester("Fehler", "Fenster konnte nicht geöffnet werden!")
End
EndIf
*SwapChainDesc.DXGI_SWAP_CHAIN_DESC = AllocateMemory(SizeOf(DXGI_SWAP_CHAIN_DESC))
InitializeStructure(SwapChainDesc, DXGI_SWAP_CHAIN_DESC)
*SwapChainDesc\BufferCount = 1;
*SwapChainDesc\BufferDesc\Width = WindowWidth(#Window);
*SwapChainDesc\BufferDesc\Height = WindowHeight(#Window);
*SwapChainDesc\BufferDesc\Format = #DXGI_FORMAT_R8G8B8A8_UNORM;
*SwapChainDesc\BufferDesc\RefreshRate\Numerator = 60;
*SwapChainDesc\BufferDesc\RefreshRate\Denominator = 1;
*SwapChainDesc\BufferUsage = #DXGI_USAGE_RENDER_TARGET_OUTPUT;
*SwapChainDesc\OutputWindow = WID;
*SwapChainDesc\SampleDesc\Count = 1;
*SwapChainDesc\SampleDesc\Quality = 0;
*SwapChainDesc\Windowed = #True;
FeatureLvls.l = #D3D_FEATURE_LEVEL_11_0;
*NewDevice.ID3D11Device = NULL
*NewSwapChain.IDXGISwapChain = NULL
*NewDeviceContext.ID3D11DeviceContext = NULL
*NewFeatureLevel = NULL
*NewRenderTargetView.ID3D11RenderTargetView = NULL
If D3D11CreateDeviceAndSwapChain(NULL, #D3D_DRIVER_TYPE_HARDWARE, NULL, 0, @FeatureLvls, 1, #D3D11_SDK_VERSION, *SwapChainDesc, @*NewSwapChain, @*NewDevice, @*NewFeatureLevel ,@*NewDeviceContext)
MessageRequester("Fehler", "SwapChain oder Device konnte nicht erstellt werden")
End
EndIf
*pBackBuffer.ID3D11Texture2D = NULL
If *NewSwapChain\GetBuffer( 0, ?IID_ID3D11Texture2D, @*pBackBuffer)
MessageRequester("Fehler", "Es konnte kein Backbuffer erstellt werden!")
End
EndIf
If *NewDevice\CreateRenderTargetView(*pBackBuffer, 0, @*NewRenderTargetView);
*pBackBuffer\Release();
End
EndIf
*pBackBuffer\Release()
; ViewPort erstellen
ViewPort.D3D11_VIEWPORT
ViewPort\Width = width;
ViewPort\Height = height;
ViewPort\MinDepth = 0.0
ViewPort\MaxDepth = 1.0
ViewPort\TopLeftX = 0;
ViewPort\TopLeftY = 0;
*NewDeviceContext\RSSetViewports(1, @ViewPort)
NewColor.D3DXCOLOR
NewColor\r = RedCF($FFB16C47)
NewColor\g = GreenCF($FFB16C47)
NewColor\b = BlueCF($FFB16C47)
NewColor\a = AlphaCF($FFB16C47)
Repeat
ExamineKeyboard()
Event.l = WindowEvent()
*NewDeviceContext\ClearRenderTargetView(*NewRenderTargetView, NewColor)
*NewSwapChain\Present(0, 0)
Delay(1)
Until Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
*NewDevice\Release()
*NewSwapChain\Release()
*NewDeviceContext\Release()
*NewRenderTargetView\Release()
Zuletzt geändert von Nero am 21.10.2012 21:38, insgesamt 2-mal geändert.
- mpz
- Beiträge: 497
- Registriert: 14.06.2005 15:53
- Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
- Wohnort: Berlin, Tempelhof
Re: SimpleDX11 lib Projekt
Hallo Nero,
hi, der erste Link zu "SimpleDX11" funktioniert, der zweite Link zu "SimpleDX11" aber nicht. Ich vermute aber das der erste Link reicht...
Ich wollte Dir sagen das ich Dein DX11 Projekt super finde. Auch noch ein Tutorial mit einem Shader Beispiel! Meine Versuche sind immer gescheitert, also mache ruhig weiter, ich lerne gerne dazu...
P.S. Ich wollte immer mein Projekt mp3d auf dx11 erweitern bzw umstellen. Dein Tutorial zeigt mir wie ich das umsetzen könnte. Es fehlt mir damit nur noch viel viel Zeit..
Gruß Michael
hi, der erste Link zu "SimpleDX11" funktioniert, der zweite Link zu "SimpleDX11" aber nicht. Ich vermute aber das der erste Link reicht...
Ich wollte Dir sagen das ich Dein DX11 Projekt super finde. Auch noch ein Tutorial mit einem Shader Beispiel! Meine Versuche sind immer gescheitert, also mache ruhig weiter, ich lerne gerne dazu...
P.S. Ich wollte immer mein Projekt mp3d auf dx11 erweitern bzw umstellen. Dein Tutorial zeigt mir wie ich das umsetzen könnte. Es fehlt mir damit nur noch viel viel Zeit..
Gruß Michael
Working on - MP3D Engine -
Re: SimpleDX11 lib Projekt
Das Shader Turorial ist zwar mit drin funktioniert leider noch nicht.
Da ist nen fieser bug drin und ich find den fehler nicht
Da ist nen fieser bug drin und ich find den fehler nicht
- mpz
- Beiträge: 497
- Registriert: 14.06.2005 15:53
- Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
- Wohnort: Berlin, Tempelhof
Re: SimpleDX11 lib Projekt
Hi,
da unter Windows 7 mit Purebasic x64 das Programm auch noch crashed muss vermutlich was mit den Structuren nicht in Ordnung sein. Hier crashed es bei "D3D11CreateDeviceAndSwapChain".
Ich habe heute leider keine Zeit mehr. Werde es mir in den nächsten Tagen ansehen. Gerade bei *pointern und bei .l und .i Adressen muss man aufpassen. Also nicht verzagen das Problem wir gelöst werden...
GRuß Michael
da unter Windows 7 mit Purebasic x64 das Programm auch noch crashed muss vermutlich was mit den Structuren nicht in Ordnung sein. Hier crashed es bei "D3D11CreateDeviceAndSwapChain".
Ich habe heute leider keine Zeit mehr. Werde es mir in den nächsten Tagen ansehen. Gerade bei *pointern und bei .l und .i Adressen muss man aufpassen. Also nicht verzagen das Problem wir gelöst werden...
GRuß Michael
Working on - MP3D Engine -
Re: SimpleDX11 lib Projekt
Vorschlag:
Wäre es nicht sinnvoll das ganze als 'OpenSource' irgendwo (z.B.: Google Code) abzulegen?
Dann können viele daran mitarbeiten, ohne das es gleich in Chaos bei der Sourceverwaltung endet.
Wäre es nicht sinnvoll das ganze als 'OpenSource' irgendwo (z.B.: Google Code) abzulegen?
Dann können viele daran mitarbeiten, ohne das es gleich in Chaos bei der Sourceverwaltung endet.
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Re: SimpleDX11 lib Projekt
Eigentlich schon nur bin ich mir noch nicht so sicher obs rein PB wird oder ne C++ libDrShrek hat geschrieben:Vorschlag:
Wäre es nicht sinnvoll das ganze als 'OpenSource' irgendwo (z.B.: Google Code) abzulegen?
Dann können viele daran mitarbeiten, ohne das es gleich in Chaos bei der Sourceverwaltung endet.
Das problem ist einfach es scheint manches mit PB einfach nicht zu funktionieren
z.B. ich Enumeriere einen VideoAdapter und will mit diesem nun ein device erstellen.
ES funktioniert mit dem Standart Adapter aber sobald ich als Adapter den eigenen angebe
spuckt D3D11CreateDevice ne error aus. obwohl das Adapter interface zuvor mit ner DX
funktion erstellt wurde und nur der Pointer übergeben wird.
Ich versuche noch ein wenig das problem zu finden ansonsten geh ich zurück zu C++ wo
ich weis das es funktioniert
Re: SimpleDX11 lib Projekt
Welcher Error-Code kommt denn?Nero hat geschrieben:Eigentlich schon nur bin ich mir noch nicht so sicher obs rein PB wird oder ne C++ libDrShrek hat geschrieben:Vorschlag:
Wäre es nicht sinnvoll das ganze als 'OpenSource' irgendwo (z.B.: Google Code) abzulegen?
Dann können viele daran mitarbeiten, ohne das es gleich in Chaos bei der Sourceverwaltung endet.
Das problem ist einfach es scheint manches mit PB einfach nicht zu funktionieren
z.B. ich Enumeriere einen VideoAdapter und will mit diesem nun ein device erstellen.
ES funktioniert mit dem Standart Adapter aber sobald ich als Adapter den eigenen angebe
spuckt D3D11CreateDevice ne error aus. obwohl das Adapter interface zuvor mit ner DX
funktion erstellt wurde und nur der Pointer übergeben wird.
Ich versuche noch ein wenig das problem zu finden ansonsten geh ich zurück zu C++ wo
ich weis das es funktioniert
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Re: SimpleDX11 lib Projekt
Das ist die entscheidende frage ich suche schon die ganze zeit nach der passenden error konstanteDrShrek hat geschrieben:Welcher Error-Code kommt denn?
da die DX Konstanten in PB nicht existieren muß ich alle abgleichen.
Der fehler ist -2147024809 oder besser -7ff8ffa9
Finde nicht wirklich die Passende konstante in der MSDN
Re: SimpleDX11 lib Projekt
Hast Du mal die Source damit das nachvollzogen werden kann?Nero hat geschrieben:Das ist die entscheidende frage ich suche schon die ganze zeit nach der passenden error konstanteDrShrek hat geschrieben:Welcher Error-Code kommt denn?
da die DX Konstanten in PB nicht existieren muß ich alle abgleichen.
Der fehler ist -2147024809 oder besser -7ff8ffa9
Finde nicht wirklich die Passende konstante in der MSDN
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...