SimpleDX11 Projekt
Re: SimpleDX11 Projekt
So die neue Version ist online (rev 21).
Habe es nochmal komplett überarbeitet und auf Interfaces umgestellt (keine COM Objekte) damit läst es sich einfacher Arbeiten finde ich.
Ansonsten gibt es nicht viel neues außer eine neue Demo (TexturedTriangle).
Wen es weiter fortgeschritten ist füge ich noch ein Interface hinzu um die verwendung noch weiter zu vereinfachen
aber fürs erste muß es so gehen.
EDIT:
AH falls es jemanden interessiert ich nutze dieses DX11 Tutorial hier. http://www.rastertek.com/tutdx11.html
Habe es nochmal komplett überarbeitet und auf Interfaces umgestellt (keine COM Objekte) damit läst es sich einfacher Arbeiten finde ich.
Ansonsten gibt es nicht viel neues außer eine neue Demo (TexturedTriangle).
Wen es weiter fortgeschritten ist füge ich noch ein Interface hinzu um die verwendung noch weiter zu vereinfachen
aber fürs erste muß es so gehen.
EDIT:
AH falls es jemanden interessiert ich nutze dieses DX11 Tutorial hier. http://www.rastertek.com/tutdx11.html
Zuletzt geändert von Nero am 25.11.2012 16:07, insgesamt 1-mal geändert.
Re: SimpleDX11 Projekt
Auch heute ein kleines Update.
Es ist eine neue Demo dabei DiffuseLighting und ich habe die Verzeichnisstruktur etwas geändert
so ist es etwas übersichtlicher.
Hm falls jemand als Code commiter eingetragen werden möchte schickt mir einfach ne PM
mit der EMailadresse eures google Accounts.
Es ist eine neue Demo dabei DiffuseLighting und ich habe die Verzeichnisstruktur etwas geändert
so ist es etwas übersichtlicher.
Hm falls jemand als Code commiter eingetragen werden möchte schickt mir einfach ne PM
mit der EMailadresse eures google Accounts.
- 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 Projekt
Hi,
schöne Arbeit. Ich hatte leider in letzte Zeit weniger Zeit sonst hätte ich mich eher gemeldet...
Ich habe noch ein paar Anmerkungen und Verbesserungsvorschläge. Sind aber noch nicht richtig ausgearbeitet. Wollte mich nur melden das von mir noch was kommt...
P.S: unter x64 funktionieren die Demos nich mehr. Vermutlich wieder ein Problem von .l statt .i. Ich werde mal sehen ob ich den Grund finden.
Gruß Michael
schöne Arbeit. Ich hatte leider in letzte Zeit weniger Zeit sonst hätte ich mich eher gemeldet...
Ich habe noch ein paar Anmerkungen und Verbesserungsvorschläge. Sind aber noch nicht richtig ausgearbeitet. Wollte mich nur melden das von mir noch was kommt...
P.S: unter x64 funktionieren die Demos nich mehr. Vermutlich wieder ein Problem von .l statt .i. Ich werde mal sehen ob ich den Grund finden.
Gruß Michael
Working on - MP3D Engine -
Re: SimpleDX11 Projekt
Dankempz hat geschrieben:Hi,
schöne Arbeit. Ich hatte leider in letzte Zeit weniger Zeit sonst hätte ich mich eher gemeldet...
Ich habe noch ein paar Anmerkungen und Verbesserungsvorschläge. Sind aber noch nicht richtig ausgearbeitet. Wollte mich nur melden das von mir noch was kommt...
P.S: unter x64 funktionieren die Demos nich mehr. Vermutlich wieder ein Problem von .l statt .i. Ich werde mal sehen ob ich den Grund finden.
Gruß Michael
Bin immer offen für Vorschläge, ist wie gesagt mein erstes DX Projekt überhaupt daher jeder Vorschlag hilft
Hab grad noch nen kleines update hochgeladen und aus der DiffuseLighting eine Ambient & DiffuseLighting Demo gemacht (aber keine neue Zip datei nur Source)
Re: SimpleDX11 Projekt
So habe gerade die neue version (rev 41) hochgeladen dort funktioniert es auch wieder im 64bit modempz hat geschrieben:P.S: unter x64 funktionieren die Demos nich mehr. Vermutlich wieder ein Problem von .l statt .i. Ich werde mal sehen ob ich den Grund finden.
Werde die tage anfangen die 2D funktionen einzufügen damit man schon mal was anähernd sinvolles mit machen kann
Re: SimpleDX11 Projekt
Prima. Dann kann ich erste Sachen mit Chipmunk ausprobieren.Nero hat geschrieben:mpz hat geschrieben:Werde die tage anfangen die 2D funktionen einzufügen damit man schon mal was anähernd sinvolles mit machen kann
Bitte auch Primitives wie Point, Line, Circle, Polygon unterstützen.
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
- 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 Projekt
Hi Nero,
ich habe am Wochende erfolglos versucht das Problem mit x64 zu lösen. Super das Du das geschafft hast, teste ich gelich heute abend...
Ich habe noch eien Vorschlag wegen der D3DXMATRIX Structur. Ich habe das in meiner Engine wie folgt gelöst, so das man sehr einfach Matrix Manipulation (z.B. Koordinaten, Grösse etc. etc.) machen kann. z.B. die Koordinaten ändern oder oder. Im Internet findet man auch diese matrix Strukturen, so das diese leichter umzusetzen sind. Hier mein Beispiel:
Gruß Michael
ich habe am Wochende erfolglos versucht das Problem mit x64 zu lösen. Super das Du das geschafft hast, teste ich gelich heute abend...
Ich habe noch eien Vorschlag wegen der D3DXMATRIX Structur. Ich habe das in meiner Engine wie folgt gelöst, so das man sehr einfach Matrix Manipulation (z.B. Koordinaten, Grösse etc. etc.) machen kann. z.B. die Koordinaten ändern oder oder. Im Internet findet man auch diese matrix Strukturen, so das diese leichter umzusetzen sind. Hier mein Beispiel:
Gruß Michael
Code: Alles auswählen
; Beispiel Macro
Macro D3DXMatrixIdentity(pOut)
pOut\_12 = 0.0
pOut\_13 = 0.0
pOut\_14 = 0.0
pOut\_21 = 0.0
pOut\_23 = 0.0
pOut\_24 = 0.0
pOut\_31 = 0.0
pOut\_32 = 0.0
pOut\_34 = 0.0
pOut\_41 = 0.0
pOut\_42 = 0.0
pOut\_43 = 0.0
pOut\_11 = 1.0
pOut\_22 = 1.0
pOut\_33 = 1.0
pOut\_44 = 1.0
EndMacro
CompilerIf Defined(D3DXMATRIX, #PB_Constant) = #False ; Kann man machen, muss aber nicht
Structure D3DXMATRIX
_11.f : _12.f : _13.f : _14.f
_21.f : _22.f : _23.f : _24.f
_31.f : _32.f : _33.f : _34.f
_41.f : _42.f : _43.f : _44.f
EndStructure
CompilerEndIf
ProcedureDLL MP_PositionMatrix (pOut.matrix, x.f, y.f, z.f) ; verschiebt eine Matrix an eine bestimmte x,y,z Position
pOut\_41 ; x Position
pOut\_42 ; y Position
pOut\_43 ; z Position
EndProcedure
Working on - MP3D Engine -
Re: SimpleDX11 Projekt
Du glaubst gar nicht wie lang ich gesucht habe bis ich es gefunden hattempz hat geschrieben:Hi Nero,
ich habe am Wochende erfolglos versucht das Problem mit x64 zu lösen. Super das Du das geschafft hast, teste ich gelich heute abend...
Ich habe noch eien Vorschlag wegen der D3DXMATRIX Structur. Ich habe das in meiner Engine wie folgt gelöst, so das man sehr einfach Matrix Manipulation (z.B. Koordinaten, Grösse etc. etc.) machen kann. z.B. die Koordinaten ändern oder oder. Im Internet findet man auch diese matrix Strukturen, so das diese leichter umzusetzen sind. Hier mein Beispiel:
Gruß Michael
[/code]
Das offensichtliche Problem war ja das fehlende padding in den Strukturen danach hat er ja den Cube angezeigt nur komplett
falsch als ob nen offset im Vertexbuffer hätte (wie falsch ich doch lag )
Erst als ich GPU PerfStudio an geschmissen habe und den Shaderinput debuggt habe ist es mir wie ne wütende Katze mit ausgefahrenen krallen ins Gesicht gesprungen
Die Indices waren falsch .....
Der Fehler war so offensichtlich das man ihn übersehen musste
Code: Alles auswählen
Dim Indices(35)
Wegen der D3DMATRIX, stimmt _11, _21 .... ist wohl einfacher als \c[0]\r[0] etc. werde es die tage mal ändern
Re: SimpleDX11 Projekt
Hiho,
Ja nach langer pause habe ich mich diesen Wochenende mal entschlossen mal wieder weiter am SimpleDX11 zu arbeiten.
Es ist nicht viel neues dazu gekommen nur ein paar Funktionen wie ExamineScreenModes usw. ansonsten nicht viel.
Die wichtigste Änderung ist das ich es in ein Modul gepackt habe und fast alle internen prozedurnamen geändert habe.
Habe es ins SVN hochgeladen eine passende Zip gibt es erst wieder wen mehr Funktionen vorhanden sind, bis dahin nur noch SVN Updates. (aktuel rev: 45)
Mal so nebenbei Module sind echt ne feine Sache wen man die mit Interfaces kombiniert dann kann man auch endlich echte Public und Privates deklarieren.
Ja nach langer pause habe ich mich diesen Wochenende mal entschlossen mal wieder weiter am SimpleDX11 zu arbeiten.
Es ist nicht viel neues dazu gekommen nur ein paar Funktionen wie ExamineScreenModes usw. ansonsten nicht viel.
Die wichtigste Änderung ist das ich es in ein Modul gepackt habe und fast alle internen prozedurnamen geändert habe.
Habe es ins SVN hochgeladen eine passende Zip gibt es erst wieder wen mehr Funktionen vorhanden sind, bis dahin nur noch SVN Updates. (aktuel rev: 45)
Mal so nebenbei Module sind echt ne feine Sache wen man die mit Interfaces kombiniert dann kann man auch endlich echte Public und Privates deklarieren.
Re: SimpleDX11 Projekt
Hiho,
Hab mich die Tage mal hingesetzt und hab SDX nochmal etwas abgeändert.
Es hat mir nie wirklich gefallen das ich DX11 selbst implementieren muss um einen eigenen Screen erstellen und somit auch keine Möglichkeit habe das Spritesystem von PB zu nutzen.
Na ja das hat sich mit dieser Version geändert
Ab sofort kann man ganz normal per OpenWindowedScreen() den Screen öffnen und wie gewohnt nutzen plus ein bisschen 3D.
Allerdings kann man zwar Sprites und 3D in einem Screen verwenden aber nicht untereinander. Also mann kann keine Texturen aus Sprites erstellen usw.
Hier mal ein Demo code. (Nicht vergessen das DirectX11 Subsystem zu aktivieren sonst gibt es ein paar Polink Errors)
Hab mich die Tage mal hingesetzt und hab SDX nochmal etwas abgeändert.
Es hat mir nie wirklich gefallen das ich DX11 selbst implementieren muss um einen eigenen Screen erstellen und somit auch keine Möglichkeit habe das Spritesystem von PB zu nutzen.
Na ja das hat sich mit dieser Version geändert
Ab sofort kann man ganz normal per OpenWindowedScreen() den Screen öffnen und wie gewohnt nutzen plus ein bisschen 3D.
Allerdings kann man zwar Sprites und 3D in einem Screen verwenden aber nicht untereinander. Also mann kann keine Texturen aus Sprites erstellen usw.
Hier mal ein Demo code. (Nicht vergessen das DirectX11 Subsystem zu aktivieren sonst gibt es ein paar Polink Errors)
Code: Alles auswählen
;/////////////////////////////////////////////////////////////;
; ;
; SimpleDX11 Demo 3_1 (Lighting and Sprites) ;
; ;
; (c) 2013 SimpleDX Team ;
; ;
; License: MIT ;
; ;
;/////////////////////////////////////////////////////////////;
; Initialize the PB Spritesystem and use the DirectX11 subsystem
InitSprite()
;Include the SimpleDX11 main file (change the pathes in there before using it)
XIncludeFile "../../SimpleDX11.pbi"
; Initialize Keyboard
If Not InitKeyboard()
MessageRequester("Error", "Could not initialize the keyboard!")
End
EndIf
; Open a Window
#Window = 0
If OpenWindow(#Window, 50, 200, 800, 600,"SimpleDX11 initialization",#PB_Window_SystemMenu | #PB_Window_SizeGadget)
If OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window))
CreateSprite(0, 50, 50)
If StartDrawing(SpriteOutput(0))
Box(0, 0, 50, 50, RGB(255, 0, 155))
Box(5, 5, 40, 40, RGB(155, 0, 255))
StopDrawing()
EndIf
Else
MessageRequester("Error", "Could not open the Screen!")
End
EndIf
Else
MessageRequester("Error", "Could not open the Window!")
End
EndIf
; Must be used after OpenScreen / OpenWindowedScreen
UseModule SimpleDX11
Define *Screen3D.Screen3D = New_Screen3D()
; Add a camera
Define *Camera.Camera = New_Camera(*Screen3D)
*Camera\SetPosition(0.0,0.0,-9.0)
; Add a light
*Light.Light = New_Light()
*Light\SetDirection(1.0, 0.0, 0.0)
*Light\SetDiffuseColor($FF48D33F)
*Light\SetAmbientColor($FF48473F)
*Light\SetSpecularColor($FF48473F)
; Add a model
*Model.Model = New_Model(*Screen3D, #SDX_Vertex_Normals | #SDX_Vertex_UVMap)
*Texture = *Model\LoadTexture("..\Models\textures\tex_1.dds")
*Model\AddCube(1.0)
*Model\SetModel()
*vShader.Shader = New_Shader(*Screen3D, #VertexShader)
If *vShader\CompileShaderFile("Shader\Vertex.vs", "VShader", "vs_5_0")
*vShader\Release() : *Model\Release() : *Camera\Release() : *Screen3D\Release() : End
End
EndIf
*pShader.Shader = New_Shader(*Screen3D, #PixelShader)
*pShader\AddTexture(*Texture)
*pShader\AddLighting()
If *pShader\CompileShaderFile("Shader\Pixel.ps", "PShader", "ps_5_0")
*pShader\Release() : *Model\Release() : *Camera\Release() : *Screen3D\Release() : End
End
EndIf
Define Rotation.f, direction.i = 2, x.i, y.i
Define ShaderDataDesc.Shader_DataDescription
ShaderDataDesc\Camera = *Camera
ShaderDataDesc\Light = *Light
CopyMemory(*Screen3D\GetWorldMatrix(), ShaderDataDesc\WorldMatrix, SizeOf(D3DMATRIX))
CopyMemory(*Screen3D\GetProjectionMatrix(), ShaderDataDesc\ProjectionMatrix, SizeOf(D3DMATRIX))
Repeat
ExamineKeyboard()
Event.l = WindowEvent()
ClearScreen($799FFF)
DisplaySprite(0, -y + 500 , -y +400)
y + direction
If y > 240 : direction = -2 : EndIf
If y < 0 : direction = 2 : EndIf
*Screen3D\Start3D()
*Camera\Render()
Rotation + (#PI * 0.005)
If Rotation >= 360.0
Rotation = 0.005
EndIf
D3DXMatrixRotationY(ShaderDataDesc\WorldMatrix, Rotation)
; Set the shader data
*vShader\SetShaderData(ShaderDataDesc)
*pShader\SetShaderData(ShaderDataDesc)
; Render all the shader and vertexbuffer ....
*vShader\Render()
*pShader\Render()
*Model\Render()
*Screen3D\Stop3D()
DisplaySprite(0, x + 300, x + 150)
x + direction
If x > 240 : direction = -2 : EndIf
If x < 0 : direction = 2 : EndIf
FlipBuffers()
Delay(1)
Until Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
; Release SimpleDX11 from Memory
; Do not forget this!
*Light\Release()
*Camera\Release()
*vShader\Release()
*pShader\Release()
*Screen3D\Release()
UnuseModule SimpleDX11
CloseScreen()
Zuletzt geändert von Nero am 30.08.2013 14:04, insgesamt 1-mal geändert.