コード例 #1
0
ファイル: Main.cpp プロジェクト: Clearlove1992/GraphicsDemos
VOID Render(float timeDelta)
{
	SetupMatrix() ;

	g_totalTime += timeDelta ;
	float x = cosf(g_totalTime) * 8.0f ;
	float y = sinf(g_totalTime) * 4.0f ;
	D3DXVECTOR3 pos(x, y, 20) ;
	
	g_Balls->Update(timeDelta, &pos) ;

	// Clear the back-buffer to a RED color
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		// Draw teapot 
		//g_pTeapotMesh->DrawSubset(0) ;
		g_Balls->Render() ;

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #2
0
void OsgHingeLimit::SetLimitPos(float fltHeight)
{
    float fltLimitPos = m_lpThisLimit->LimitPos();
	CStdFPoint vPos(0, 0, 0), vRot(0, 0, 0); 

	//Reset the position and rotation of the flap.
	if(m_osgFlapRotateMT.valid() && m_osgFlapTranslateMT.valid())
	{

		vPos.Set(0, 0, 0); vRot.Set(0, 0, -fltLimitPos); 
		m_osgFlapRotateMT->setMatrix(SetupMatrix(vPos, vRot));

		vPos.Set((fltHeight/2)*sin(-fltLimitPos), -(fltHeight/2)*cos(-fltLimitPos), 0); vRot.Set(0, 0, 0); 
		m_osgFlapTranslateMT->setMatrix(SetupMatrix(vPos, vRot));
	}
}
コード例 #3
0
ファイル: Fog.cpp プロジェクト: BillyKim/directxcode
VOID Render()
{
	SetupLight() ;
	SetupLight() ;
	SetupMatrix() ;

	g_pCamera->Update(0.1f, 1.0f) ;

	// Clear the back-buffer to a RED color
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(255,255,255), 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		// Draw teapot
		g_pTeapotMesh->DrawSubset(0) ;

		RenderFog(0xff00ff00, D3DFOG_LINEAR, TRUE, 10.f) ;

		//RenderGround() ;

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #4
0
VOID Render()
{
	SetupMatrix() ;

	OnFrameMove() ;

	g_pCamera->Update(0.1f, 1.0f) ;

	// Clear the back-buffer to a RED color
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(255,255,255), 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		RenderTerrain() ;

		RenderTree() ;

		RenderTeapot() ;

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #5
0
ファイル: Sphere.cpp プロジェクト: BillyKim/directxcode
VOID Render(float timeDelta)
{
	if (!g_bActive)
		Sleep(50) ;

	SetupMatrix(timeDelta);

	// Clear the back-buffer to a BLUE color
	float color[4] = { 0.0f, 0.125f, 0.3f, 1.0f };
	g_pd3dDevice->ClearRenderTargetView(g_pRenderTargetView, color);

	// Set the input layout
	g_pd3dDevice->IASetInputLayout(g_pVertexLayout);

	// Set rasterazition state
	g_pd3dDevice->RSSetState(g_pRasterizerState);

	// Apply each pass in technique and draw triangle.
	D3D10_TECHNIQUE_DESC techDesc;
	g_pTechnique->GetDesc(&techDesc);
	for (unsigned int i = 0; i < techDesc.Passes; ++i)
	{
		g_pTechnique->GetPassByIndex(i)->Apply(0);
	}

	// Draw sphere
	g_pSphere->DrawSubset(0);

	// Present the sence from back buffer to front buffer
	g_pSwapChain->Present(0, 0);
}
コード例 #6
0
ファイル: torus.cpp プロジェクト: BillyKim/directxcode
VOID Render(float timeDelta) 
{ 
	if(!PrepareShader()) 
		return ; 

	SetupMatrix(timeDelta) ; 

	// Clear the back-buffer to a RED color 
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 ); 

	// Begin the scene 
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) ) 
	{ 
		// Rendering of scene objects can happen here 
		g_pd3dDevice->SetPixelShader(g_pPixelShader) ; 

		g_pTorusMesh->DrawSubset(0) ; 

		// End the scene 
		g_pd3dDevice->EndScene(); 
	} 

	// Present the back-buffer contents to the display 
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL ); 
} 
コード例 #7
0
bool VsJoint::Physics_CalculateLocalPosForWorldPos(float fltWorldX, float fltWorldY, float fltWorldZ, CStdFPoint &vLocalPos)
{
	VsMovableItem *lpParent = m_lpThisVsMI->VsParent();

	if(lpParent && m_lpVsChild)
	{
		fltWorldX *= m_lpThisAB->GetSimulator()->InverseDistanceUnits();
		fltWorldY *= m_lpThisAB->GetSimulator()->InverseDistanceUnits();
		fltWorldZ *= m_lpThisAB->GetSimulator()->InverseDistanceUnits();

		CStdFPoint vPos(fltWorldX, fltWorldY, fltWorldZ), vRot(0, 0, 0);
		osg::Matrix osgWorldPos = SetupMatrix(vPos, vRot);

		//Get the parent object.
		osg::Matrix osgInverse = osg::Matrix::inverse(m_lpVsChild->GetWorldMatrix());

		osg::Matrix osgCalc = osgWorldPos * osgInverse;

		osg::Vec3 vCoord = osgCalc.getTrans();
		vLocalPos.Set(vCoord[0] * m_lpThisAB->GetSimulator()->DistanceUnits(), 
				      vCoord[1] * m_lpThisAB->GetSimulator()->DistanceUnits(), 
				      vCoord[2] * m_lpThisAB->GetSimulator()->DistanceUnits());
		
		return true;
	}

	return false;
}
コード例 #8
0
ファイル: camera.cpp プロジェクト: vgck/opendr2
void Camera::SetProjTransform( F32 n, F32 f, F32 fv)
{
  if (f <= n)
  {
    f = n + 1.0f;
  }
  isIso = FALSE;

  nearPlane = n;
	farPlane  = f;
	fov		    = fv;
  maxZ      = farPlane * zoom - nearPlane;

	Vid::SetTranBucketMaxZ( farPlane * zoom);
	Vid::SetTranBucketMinZ(0.0f);
  Vid::SetTranMaxBucketCount( TRANMAXBUCKETCOUNT);

  halfHeight = ((F32) rect.Height()) * 0.5f;
  halfWidth  = ((F32) rect.Width())  * 0.5f;
  aspectHW   = halfHeight / halfWidth;

  projMatrix.SetProjection( nearPlane, farPlane * zoom, fov / zoom, aspectHW);

  viewMatrix.Transform( tranMatrix, projMatrix);

  SetupMatrix();
  SetupView();
}
コード例 #9
0
ファイル: camera.cpp プロジェクト: vgck/opendr2
void Camera::SetProjTransformIso( F32 n, F32 f, F32 fv, F32 w, F32 h)
{
  if (f <= n)
  {
    f = n + 1.0f;
  }
  isIso = TRUE;

  nearPlane = n;
	farPlane  = f;
	fov		    = fv;
  maxZ      = farPlane * zoom - nearPlane;

  fv *= 0.5f;
	F32 s = (F32) sin(fv);
	F32 qv = s * f / (f - n);
	  
  // set up the isometric projection matrix
	projMatrix.Zero();
  projMatrix.right.x = 2.0f / h;
	projMatrix.up.y    = 2.0f / w;
	projMatrix.front.z = 1.0f;
//	projMatrix.frontw = 1.0f;
	projMatrix.posit.z = -qv * n;
	projMatrix.positw = 1.0f;

  halfHeight = ((F32) rect.Height()) * 0.5f;
  halfWidth  = ((F32) rect.Width())  * 0.5f;
  aspectHW   = halfHeight / halfWidth;

  viewMatrix.Transform( tranMatrix, projMatrix);

  SetupMatrix();
  SetupView();
}
コード例 #10
0
/**
\brief	Creates the default ball graphics.

\author	dcofer
\date	4/15/2011
**/
void VsJoint::CreateJointGraphics()
{
	//Create the cylinder for the hinge
	m_osgDefaultBall = CreateSphereGeometry(15, 15, m_lpThisJoint->Size());
	osg::ref_ptr<osg::Geode> osgBall = new osg::Geode;
	osgBall->addDrawable(m_osgDefaultBall.get());

	CStdFPoint vPos(0, 0, 0), vRot(VX_PI/2, 0, 0); 
	m_osgDefaultBallMT = new osg::MatrixTransform();
	m_osgDefaultBallMT->setMatrix(SetupMatrix(vPos, vRot));
	m_osgDefaultBallMT->addChild(osgBall.get());

	//create a material to use with the pos flap
	if(!m_osgDefaultBallMat.valid())
		m_osgDefaultBallMat = new osg::Material();		

	//create a stateset for this node
	m_osgDefaultBallSS = m_osgDefaultBallMT->getOrCreateStateSet();

	//set the diffuse property of this node to the color of this body	
	m_osgDefaultBallMat->setAmbient(osg::Material::FRONT_AND_BACK, osg::Vec4(0.1, 0.1, 0.1, 1));
	m_osgDefaultBallMat->setDiffuse(osg::Material::FRONT_AND_BACK, osg::Vec4(1, 0.25, 1, 1));
	m_osgDefaultBallMat->setSpecular(osg::Material::FRONT_AND_BACK, osg::Vec4(0.25, 0.25, 0.25, 1));
	m_osgDefaultBallMat->setShininess(osg::Material::FRONT_AND_BACK, 64);
	m_osgDefaultBallSS->setMode(GL_BLEND, osg::StateAttribute::OVERRIDE | osg::StateAttribute::ON); 

	//apply the material
	m_osgDefaultBallSS->setAttribute(m_osgDefaultBallMat.get(), osg::StateAttribute::ON);

	m_osgJointMT->addChild(m_osgDefaultBallMT.get());
}
コード例 #11
0
void Render(float timeDelta)
{
	if (!g_bActive)
	{
		Sleep(50) ;
	}

	SetupMatrix() ;

	// Clear the back-buffer to a RED color
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		// Draw teapot 
		g_pTeapotMesh->DrawSubset(0) ;

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #12
0
void MazeGraphicsView::wheelEvent(QWheelEvent* event)
{
    if (event->delta() > 0)
        ZoomIn();
    else
        ZoomOut();

    SetupMatrix();
}
コード例 #13
0
    //! Setup Hierarchy object
    virtual void SetupHierarchy(Hierarchy& H) const {
      TEUCHOS_TEST_FOR_EXCEPTION(!H.GetLevel(0)->IsAvailable("A"), Exceptions::RuntimeError, "No fine level operator");

      // Setup Matrix
      // TODO: I should certainly undo this somewhere...
      RCP<Level>  l  = H.GetLevel(0);
      RCP<Matrix> Op = l->Get<RCP<Matrix> >("A");

      Xpetra::UnderlyingLib lib = Op->getRowMap()->lib();
      H.setlib(lib);

      SetupMatrix(*Op);
      SetupExtra(H);

      // Setup Hierarchy
      H.SetMaxCoarseSize(maxCoarseSize_);
      H.SetDefaultVerbLevel(verbosity_);
      if (graphOutputLevel_ >= 0)
        H.EnableGraphDumping("dep_graph.dot", graphOutputLevel_);

      // TODO: coarsestLevelManager

      H.Clear();

      int  levelID     = 0;
      int  lastLevelID = numDesiredLevel_ - 1;
      bool isLastLevel = false;

      while (!isLastLevel) {
        bool r = H.Setup(levelID,
                         LvlMngr(levelID-1, lastLevelID),
                         LvlMngr(levelID,   lastLevelID),
                         LvlMngr(levelID+1, lastLevelID));

        isLastLevel = r || (levelID == lastLevelID);
        levelID++;
      }
      RCP<Teuchos::FancyOStream> fos = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout));
      fos->setOutputToRootOnly(0);
      H.print(*fos,verbosity_);

      // When we reuse hierarchy, it is necessary that we don't
      // change the number of levels. We also cannot make requests
      // for coarser levels, because we don't construct all the
      // data on previous levels. For instance, let's say our first
      // run constructed three levels. If we try to do requests during
      // next setup for the fourth level, it would need Aggregates
      // which we didn't construct for level 3 because we reused P.
      // To fix this situation, we change the number of desired levels
      // here.
      numDesiredLevel_ = levelID;

      WriteData<Matrix>(H, matricesToPrint_,     "A");
      WriteData<Matrix>(H, prolongatorsToPrint_, "P");
      WriteData<Matrix>(H, restrictorsToPrint_,  "R");

    } //SetupHierarchy
コード例 #14
0
void OsgHingeLimit::SetupLimitGraphics(float fltFlapWidth, float fltCylinderHeight)
{
    float fltLimitPos = m_lpThisLimit->LimitPos();
    CStdColor *vColor =  m_lpThisLimit->Color();

	//Create the min flap
	m_osgFlap = CreateBoxGeometry(fltFlapWidth, (fltCylinderHeight/2), 
									fltCylinderHeight, fltFlapWidth, 
									(fltCylinderHeight/2), fltCylinderHeight);
	osg::ref_ptr<osg::Geode> osgFlap = new osg::Geode;
	osgFlap->addDrawable(m_osgFlap.get());

	CStdFPoint vPos(0, 0, 0), vRot(0, 0, 0); 

	//Rotate flap first then translate.
	vPos.Set(0, 0, 0); vRot.Set(0, 0, -fltLimitPos); 
	m_osgFlapRotateMT = new osg::MatrixTransform();
	m_osgFlapRotateMT->setMatrix(SetupMatrix(vPos, vRot));
	m_osgFlapRotateMT->addChild(osgFlap.get());

	vPos.Set((fltCylinderHeight/2)*sin(-fltLimitPos), -(fltCylinderHeight/2)*cos(-fltLimitPos), 0); 
	vRot.Set(0, 0, 0); 
	m_osgFlapTranslateMT = new osg::MatrixTransform();
	m_osgFlapTranslateMT->setMatrix(SetupMatrix(vPos, vRot));
	m_osgFlapTranslateMT->addChild(m_osgFlapRotateMT.get());

	//create a material to use with the pos flap
	if(!m_osgFlapMat.valid())
		m_osgFlapMat = new osg::Material();		

	//create a stateset for this node
	m_osgFlapSS = m_osgFlapTranslateMT->getOrCreateStateSet();

	//set the diffuse property of this node to the color of this body	
	m_osgFlapMat->setAmbient(osg::Material::FRONT_AND_BACK, osg::Vec4(0.1, 0.1, 0.1, 1));
	m_osgFlapMat->setDiffuse(osg::Material::FRONT_AND_BACK, osg::Vec4(vColor->r(), vColor->g(), vColor->b(), vColor->a()));
	m_osgFlapMat->setSpecular(osg::Material::FRONT_AND_BACK, osg::Vec4(0.25, 0.25, 0.25, 1));
	m_osgFlapMat->setShininess(osg::Material::FRONT_AND_BACK, 64);
	m_osgFlapSS->setMode(GL_BLEND, osg::StateAttribute::OVERRIDE | osg::StateAttribute::ON); 

	//apply the material
	m_osgFlapSS->setAttribute(m_osgFlapMat.get(), osg::StateAttribute::ON);
}
コード例 #15
0
ファイル: RGBColorSystem.cpp プロジェクト: aleixpuig/PCL
bool RGBColorSystem::Data::ValidateParameters( const FVector& x, const FVector& y, const FVector& Y )
{
   try
   {
      volatile Vector M_ = InverseMatrix( SetupMatrix( x, y, Y ) );
      return true;
   }
   catch ( ... )
   {
      return false;
   }
}
コード例 #16
0
MazeGraphicsView::MazeGraphicsView(QWidget* parent)
    : QGraphicsView(parent)
    , zoom_value_(MIN_ZOOM)
{
    setRenderHint(QPainter::Antialiasing);
    setDragMode(QGraphicsView::ScrollHandDrag);

    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

    SetupMatrix();
}
コード例 #17
0
ファイル: camera.cpp プロジェクト: vgck/opendr2
void Camera::SetWorldRecurseRender( const Matrix &world, FamilyState *stateArray)
{
  CalcWorldMatrix( world);

  NList<FamilyNode>::Iterator kids(&children);
  FamilyNode *node;
  while ((node = kids++) != NULL)
  {
    node->SetWorldRecurseRender( statePtr->WorldMatrix(), stateArray);
  }
  
  SetupMatrix();
}
コード例 #18
0
VxVector3 VsJoint::NormalizeAxis(CStdFPoint vLocalRot)
{
	osg::Vec3 vPosN(1, 0, 0);
	CStdFPoint vMatrixPos(0, 0, 0);

	osg::Matrix osgMT = SetupMatrix(vMatrixPos, vLocalRot);

	osg::Vec3 vNorm = vPosN * osgMT;

	VxVector3 axis((double) vNorm[0], (double) vNorm[1], (double) vNorm[2]);

	return axis;
}
コード例 #19
0
void VsJoint::Physics_UpdateMatrix()
{
	LocalMatrix(SetupMatrix(m_lpThisMI->Position(), m_lpThisMI->Rotation()));
	m_osgMT->setMatrix(m_osgLocalMatrix);
	m_osgDragger->SetupMatrix();

	//Now lets get the localmatrix from the child object and use that for our offsetmatrix
	VsBody *lpVsChild = dynamic_cast<VsBody *>(m_lpThisJoint->Child());
	if(lpVsChild)
		ChildOffsetMatrix(lpVsChild->LocalMatrix());

	//If we are here then we did not have a physics component, just and OSG one.
	Physics_UpdateAbsolutePosition();
}
コード例 #20
0
VOID Render(float timeDelta)
{
    SetupMatrix() ;

    g_ModelViewCamera->OnFrameMove();

    // Save render target
    g_pd3dDevice->GetRenderTarget(0, &g_pOldRenderTarget) ;

    g_pd3dDevice->SetRenderTarget(0, g_pRenderSurface) ;
    g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff0000ff, 1.0f, 0 );

    // Begin the scene
    if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
    {
        // Without this line, the teapot won't show up, what's the inner stuff of SetTexture?
        g_pd3dDevice->SetTexture(0, NULL) ;

        // Disable lighting, since we didn't specify color for vertex
        g_pd3dDevice->SetRenderState( D3DRS_LIGHTING , FALSE );
        g_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME) ;

        D3DXMATRIX word ;
        D3DXMatrixTranslation(&word, 0.0f, 0.0f, 0.0f) ;

        static float totalTime = 0.0f ;
        totalTime += timeDelta * 2 ;

        D3DXMATRIX rot ;
        D3DXMatrixRotationY(&rot, totalTime) ;

        word *= rot ;
        g_pd3dDevice->SetTransform(D3DTS_WORLD, &word) ;

        g_pTeapotMesh->DrawSubset(0) ;

        // End the scene
        g_pd3dDevice->EndScene();
    }

    // Restore the back buffer
    g_pd3dDevice->SetRenderTarget(0, g_pOldRenderTarget) ;

    RenderCube(timeDelta) ;

    // Present the back-buffer contents to the display
    g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #21
0
/**
\brief	Sets up the graphics for the joint.

\detail This base joint class sets up a default ball graphics object. A few of the joint
classes do not have any special graphics associated with them, so simply knowing where the joint
is located is enough, and a ball to define that position is sufficient. This base code creates
that graphics so that each derived class does not have to. If a joint does need special 
graphics then just override this function and define it yourself, but do not call this base method.

\author	dcofer
\date	4/15/2011
**/
void VsJoint::SetupGraphics()
{
	//Setup Vs pointers to child and parent.
	m_lpVsParent = dynamic_cast<VsRigidBody *>(m_lpThisJoint->Parent());
	if(!m_lpVsParent)
		THROW_ERROR(Vs_Err_lUnableToConvertToVsRigidBody, Vs_Err_strUnableToConvertToVsRigidBody);

	m_lpVsChild = dynamic_cast<VsRigidBody *>(m_lpThisJoint->Child());
	if(!m_lpVsChild)
		THROW_ERROR(Vs_Err_lUnableToConvertToVsRigidBody, Vs_Err_strUnableToConvertToVsRigidBody);

	//The parent osg object for the joint is actually the child rigid body object.
	m_osgParent = ParentOSG();
	osg::ref_ptr<osg::Group> osgChild = ChildOSG();

	if(m_osgParent.valid())
	{
		//Add the parts to the group node.
		CStdFPoint vPos(0, 0, 0), vRot(VX_PI/2, 0, 0); 
		vPos.Set(0, 0, 0); vRot.Set(0, VX_PI/2, 0); 
		
		m_osgJointMT = new osg::MatrixTransform();
		m_osgJointMT->setMatrix(SetupMatrix(vPos, vRot));

		m_osgNode = m_osgJointMT.get();

		//Create the sphere.
		CreateJointGraphics();

		BuildLocalMatrix();

		SetAlpha();
		SetCulling();
		SetVisible(m_lpThisMI->IsVisible());

		//Add it to the scene graph.
		m_osgParent->addChild(m_osgRoot.get());

		//Set the position with the world coordinates.
		Physics_UpdateAbsolutePosition();

		//We need to set the UserData on the OSG side so we can do picking.
		//We need to use a node visitor to set the user data for all drawable nodes in all geodes for the group.
		osg::ref_ptr<VsOsgUserDataVisitor> osgVisitor = new VsOsgUserDataVisitor(this);
		osgVisitor->traverse(*m_osgMT);
	}
}
コード例 #22
0
void VsJoint::BuildLocalMatrix(CStdFPoint localPos, CStdFPoint localRot, std::string strName)
{
	if(!m_osgMT.valid())
	{
		m_osgMT = new osgManipulator::Selection;
		m_osgMT->setName(strName + "_MT");
	}

	if(!m_osgChildOffsetMT.valid())
	{
		m_osgChildOffsetMT = new osg::MatrixTransform;
		m_osgChildOffsetMT->setName(strName + "ChildOffsetMT");
		m_osgChildOffsetMT->addChild(m_osgMT.get());
	}

	if(!m_osgRoot.valid())
	{
		m_osgRoot = new osg::Group;
		m_osgRoot->setName(strName + "_Root");
		m_osgRoot->addChild(m_osgChildOffsetMT.get());
	}

	LocalMatrix(SetupMatrix(localPos, localRot));

	//set the matrix to the matrix transform node
	m_osgMT->setMatrix(m_osgLocalMatrix);	
	m_osgMT->setName(strName.c_str());

	//Now lets get the localmatrix from the child object and use that for our offsetmatrix
	VsBody *lpVsChild = dynamic_cast<VsBody *>(m_lpThisJoint->Child());
	if(lpVsChild)
		ChildOffsetMatrix(lpVsChild->LocalMatrix());

	//First create the node group. The reason for this is so that we can add other decorated groups on to this node.
	//This is used to add the selected overlays.
	if(!m_osgNodeGroup.valid())
	{
		m_osgNodeGroup = new osg::Group();
		m_osgNodeGroup->addChild(m_osgNode.get());		
		m_osgNodeGroup->setName(strName + "_NodeGroup");

		m_osgMT->addChild(m_osgNodeGroup.get());
	
		CreateSelectedGraphics(strName);
	}
}
コード例 #23
0
VOID Render()
{
	SetupMatrix() ;

	g_ModelViewCamera->OnFrameMove();

	g_pd3dDevice->GetRenderTarget(0, &g_pOldRenderTarget) ;

	g_pd3dDevice->SetRenderTarget(0, g_pRenderSurface) ;
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff0000ff, 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		// Without this line, the teapot won't show up, what's the inner stuff of SetTexture?
		g_pd3dDevice->SetTexture(0, NULL) ;

		// Disable lighting, since we didn't specify color for vertex
		g_pd3dDevice->SetRenderState( D3DRS_LIGHTING , FALSE ); 
		g_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME) ;
		g_pTeapotMesh->DrawSubset(0) ;

		// End the scene
		g_pd3dDevice->EndScene();
	}

	g_pd3dDevice->SetRenderTarget(0, g_pOldRenderTarget) ;

	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff00ff00, 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		g_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID) ;

		// Render texture
		RenderQuad() ;

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #24
0
VOID Render()
{
	SetupMatrix() ;

	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff000000, 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		RenderQuad() ;

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #25
0
ファイル: Main.cpp プロジェクト: BillyKim/directxcode
VOID Render()
{
	// Set a red light
	SetupLight(D3DXCOLOR(1.0f, 0.0f, 0.0f, 1.0f)) ;

	SetupMatrix() ;

	// Clear the back-buffer to a RED color
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(55,205,0), 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		g_pTeapotMesh->DrawSubset(0) ;

		/*
		Here, we create a small new viewport and place it at the bottom right of the main window
		the new view port start at position(400, 400) with size(200, 200)
		*/
		D3DVIEWPORT9 viewport ;
		viewport.X = 400 ;
		viewport.Y = 400 ;
		viewport.Width = 200 ;
		viewport.Height = 200 ;
		viewport.MinZ = 0.0f ;
		viewport.MaxZ = 1.0f ;
		
		// Set the new view port
		g_pd3dDevice->SetViewport(&viewport) ;

		// Clear the view port to yellow
		// This will failed in Debug libaries
		g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,0), 1.0f, 0 );

		// Draw the teapot again
		g_pTeapotMesh->DrawSubset(0) ;

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #26
0
VOID Render()
{
	// Clear the back-buffer to a blue color
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,255), 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		SetupMatrix() ;
		
		DrawCube();

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the backbuffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #27
0
ファイル: PointSprites.cpp プロジェクト: BillyKim/directxcode
void Render(float timeDelta)
{
	if (!g_bActive)
	{
		Sleep(50) ;
	}

	SetupMatrix() ;

	// Clear the back-buffer to a RED color
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		// Render state
		g_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
		g_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_ONE );
		g_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE );
		g_pd3dDevice->SetRenderState(D3DRS_POINTSPRITEENABLE, TRUE) ;
		g_pd3dDevice->SetRenderState(D3DRS_POINTSCALEENABLE, TRUE) ;
		g_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, FtoDW(0.2f) );


		// Set texture
		g_pd3dDevice->SetTexture(0, g_pTexture) ;

		// Draw points
		g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(POINTVERTEX));
		g_pd3dDevice->SetFVF(D3DFVF_POINTVERTEX) ;
		g_pd3dDevice->DrawPrimitive( D3DPT_POINTLIST, 0, NUM_VERTEX) ;

		// Restore state
		g_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #28
0
ファイル: FullScreen.cpp プロジェクト: BillyKim/directxcode
VOID Render()
{
	SetupMatrix() ;

	// Clear the back-buffer to a RED color
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		// Draw teapot 
		g_pMesh->DrawSubset(0) ;

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #29
0
VOID Render(float timeDelta)
{
	SetupMatrix() ;

	UpdateTextureCoordinates(timeDelta) ;

	// Clear the back-buffer to a RED color
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff568800, 1.0f, 0 );

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		RenderQuad() ;

		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
コード例 #30
0
void Render(float timeDelta)
{
	if (!g_bActive)
	{
		Sleep(50) ;
	}

	SetupMatrix() ;

	// Clear the back-buffer to a RED color
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );

	// Disable lighting, since we didn't specify color for vertex
	g_pd3dDevice->SetRenderState( D3DRS_LIGHTING , FALSE );   

	// Begin the scene
	if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
	{
		// Draw teapot 
		g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
		g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );

		// 12 triangles forms six faces and a cube
		g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 12 );


		// End the scene
		g_pd3dDevice->EndScene();
	}

	// Present the back-buffer contents to the display
	HRESULT hr = g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
	if (FAILED(hr))
	{
		d3dpp.Windowed = TRUE; // use window mode, not full screen
		d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
		d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
		ResetDevice(d3dpp);
	}
}