Ver Fonte

Kamera perspektiven hinzugefügt

Kolja Strohm há 5 anos atrás
pai
commit
5c462e193a
3 ficheiros alterados com 76 adições e 2 exclusões
  1. 1 1
      3DCreator/3DCreator.vcxproj
  2. BIN
      3DCreator/Framework.dll
  3. 75 1
      3DCreator/Start.cpp

+ 1 - 1
3DCreator/3DCreator.vcxproj

@@ -22,7 +22,7 @@
     <ProjectGuid>{9AC35DE2-43DC-4143-B0C6-23FFCA9DE62B}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>My3DCreator</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

BIN
3DCreator/Framework.dll


+ 75 - 1
3DCreator/Start.cpp

@@ -3,6 +3,10 @@
 #include <Bildschirm.h>
 #include <RenderThread.h>
 #include <Welt3D.h>
+#include <Cube.h>
+#include <Kam3D.h>
+#include <Bild.h>
+#include <Rahmen.h>
 
 using namespace Framework;
 
@@ -23,18 +27,88 @@ int __stdcall Framework::Start( Startparam p )
     f->erstellen( WS_OVERLAPPEDWINDOW, wc );
     f->setVSchließAktion( schließen );
     f->setAnzeigeModus( SW_SHOWNORMAL );
-    f->setSize( 1300, 800 );
+    f->setSize( 1300, 820 );
+    f->setPosition( Punkt( 100, 100 ) );
 
     // 3D Umgebung erstellen
     Bildschirm3D *b = new Bildschirm3D( f->getThis() );
     f->setBildschirm( b->getThis() );
     b->setFillFarbe( 0 );
+    b->setTestRend( 0 );
 
     Welt3D *welt = new Welt3D();
+    Cube *test = new Cube( 10 );
+    Bild b1;
+    b1.neuBild( 100, 100, 0xFF00FF00 );
+    //test->setTextur( b1.getThis() );
+    test->setPosition( 0, 0, 0 );
+    welt->addZeichnung( test );
+
+    Kam3D *kamA = new Kam3D();
+    kamA->setBildschirmPosition( 10, 10 );
+    kamA->setBildschirmSize( 385, 385 );
+    kamA->setPosition( Vec3<float>( -1000, 0, 0 ) );
+    kamA->setAusrichtung( Vec3<float>( 0, 0, 0 ) );
+    kamA->setWelt( welt->getThis() );
+    b->addKamera( kamA );
+
+    Kam3D *kamB = new Kam3D();
+    kamB->setBildschirmPosition( 10, 405 );
+    kamB->setBildschirmSize( 385, 385 );
+    kamB->setPosition( Vec3<float>( 0, -1000, 0 ) );
+    kamB->setAusrichtung( Vec3<float>( 0, 0, 0 ) );
+    kamB->setWelt( welt->getThis() );
+    b->addKamera( kamB );
+
+    Kam3D *kamC = new Kam3D();
+    kamC->setBildschirmPosition( 405, 10 );
+    kamC->setBildschirmSize( 385, 385 );
+    kamC->setPosition( Vec3<float>( 0, 0, -1000 ) );
+    kamC->setAusrichtung( Vec3<float>( 0, 0, 0 ) );
+    kamC->setWelt( welt->getThis() );
+    b->addKamera( kamC );
+
+    Kam3D *kamD = new Kam3D();
+    kamD->setStyle( Kam3D::Style::Movable | Kam3D::Style::Rotatable | Kam3D::Style::Tick );
+    kamD->setBildschirmPosition( 405, 405 );
+    kamD->setBildschirmSize( 385, 385 );
+    kamD->setPosition( Vec3<float>( 0, 0, -1000 ) );
+    kamD->setAusrichtung( Vec3<float>( 0, 0, 0 ) );
+    kamD->setWelt( welt->getThis() );
+    b->addKamera( kamD );
+
+    LRahmen *kamAR = new LRahmen();
+    kamAR->setPosition( 10, 10 );
+    kamAR->setFarbe( 0xFFFFFFFF );
+    kamAR->setRamenBreite( 1 );
+    kamAR->setSize( 385, 385 );
+    b->addMember( kamAR );
+    LRahmen *kamBR = new LRahmen();
+    kamBR->setPosition( 404, 10 );
+    kamBR->setFarbe( 0xFFFFFFFF );
+    kamBR->setRamenBreite( 1 );
+    kamBR->setSize( 385, 385 );
+    b->addMember( kamBR );
+    LRahmen *kamCR = new LRahmen();
+    kamCR->setPosition( 10, 405 );
+    kamCR->setFarbe( 0xFFFFFFFF );
+    kamCR->setRamenBreite( 1 );
+    kamCR->setSize( 385, 385 );
+    b->addMember( kamCR );
+    LRahmen *kamDR = new LRahmen();
+    kamDR->setPosition( 405, 405 );
+    kamDR->setFarbe( 0xFFFFFFFF );
+    kamDR->setRamenBreite( 1 );
+    kamDR->setSize( 385, 385 );
+    b->addMember( kamDR );
 
     // Render Loop starten
     RenderTh *r = new RenderTh();
     r->setBildschirm( b->getThis() );
+    r->setTickFunktion( [ test, b ]( void *, void *, double t )
+    {
+        test->setDrehung( test->getDrehung() + Vec3<double>( t, t, t ) );
+    } );
     r->beginn();
 
     // Nachrichten Loop starten und warten