Implementierung einer DirectX11 basierenden 3D Engine in C++
Verfasst: 01.04.2024, 00:02
Liebe Community,
in den letzten Tagen habe ich mich mit der Implementierung einer 3D-Engine auf Basis von DirectX 11 beschäftigt. Die Idee dazu hatte ich bereits vor einigen Jahren, genauer so 2002/20004 rum, als ich eine 2D-Version umsetzte. Viel später wagte ich mich dann an eine 3D-Version unter Verwendung von DirectX 9. Allerdings habe ich diese Version nie veröffentlicht, da ich mit der Qualität des Codes nicht zufrieden war.
Ich selbst bin ein Hobbyprogrammierer und widme meine Freizeit der Entwicklung von Software. Das können Spiele sein oder Software um Lotto zu spielen :) oder eben 2D/3D Engines...
Ich möchte jeden einladen der Lust hat sich die 3D Engine anzuschauen. Aktuell kann die Engine nicht viel bzw. es kann schon was, aber man sieht nicht viel. Was es kann ist bunte Rechtecke zu rendern : )
Ihr könnte auf dieser Seite im Entwicklungslog etwas über die Entwicklung lesen. Ist in englisch + deutsch
Und auf github könnte ihr Euch den Code anschauen. Ich freue mich über Feedback und hoffe das neue Ideen oder Vorschläge kommen.
und das ist der Code dazu:
in den letzten Tagen habe ich mich mit der Implementierung einer 3D-Engine auf Basis von DirectX 11 beschäftigt. Die Idee dazu hatte ich bereits vor einigen Jahren, genauer so 2002/20004 rum, als ich eine 2D-Version umsetzte. Viel später wagte ich mich dann an eine 3D-Version unter Verwendung von DirectX 9. Allerdings habe ich diese Version nie veröffentlicht, da ich mit der Qualität des Codes nicht zufrieden war.
Ich selbst bin ein Hobbyprogrammierer und widme meine Freizeit der Entwicklung von Software. Das können Spiele sein oder Software um Lotto zu spielen :) oder eben 2D/3D Engines...
Ich möchte jeden einladen der Lust hat sich die 3D Engine anzuschauen. Aktuell kann die Engine nicht viel bzw. es kann schon was, aber man sieht nicht viel. Was es kann ist bunte Rechtecke zu rendern : )
Ihr könnte auf dieser Seite im Entwicklungslog etwas über die Entwicklung lesen. Ist in englisch + deutsch
Und auf github könnte ihr Euch den Code anschauen. Ich freue mich über Feedback und hoffe das neue Ideen oder Vorschläge kommen.
und das ist der Code dazu:
Code: Alles auswählen
#include "gidx.h"
int main()
{
Engine::Graphics(1024, 768);
LPMESH camera;
Engine::CreateCamera(&camera);
// Brush erstellen / Jedes Brush ist nach dem erstellen ein Child vom Standard-Shader
LPBRUSH brush;
Engine::CreateBrush(&brush);
// Vertexdaten werden hier gespeichert
LPMESH mesh;
Engine::CreateMesh(&mesh, brush);
// Vertexdaten werden hier gespeichert
LPSURFACE surface;
Engine::CreateSurface(&surface, mesh);
Engine::AddVertex(surface, -1.0f, -1.0f, 0.0f); Engine::VertexColor(surface, 0 , 255, 0);
Engine::AddVertex(surface, -1.0f, 1.0f, 0.0f); Engine::VertexColor(surface, 0 , 0, 255);
Engine::AddVertex(surface, 1.0f, -1.0f, 0.0f); Engine::VertexColor(surface, 255, 0, 0);
Engine::AddVertex(surface, 1.0f, 1.0f, 0.0f); Engine::VertexColor(surface, 255, 255, 0);
Engine::AddTriangle(surface, 0, 1, 2);
Engine::AddTriangle(surface, 1, 3, 2);
Engine::FillBuffer(surface);
while (gdx::MainLoop() && !(GetAsyncKeyState(VK_ESCAPE) & 0x8000))
{
Engine::Cls(32, 64, 128);
Engine::engine->RenderWorld();
Engine::Flip();
}
// Shutdown the engine
return(gdx::ShutDown());
}