Exemplo n.º 1
0
//	constructor..make the quadric used
//	and the required textures
VDSSubSystem::VDSSubSystem() : m_Effect( "supershader.fx" )
{
    m_PyramidMesh         = NULL;
    m_InvertedPyramidMesh = NULL;
    m_EyeMesh             = NULL;

	VDSImmediateMode::Init();

	TSRModel* pStudModel = ModelManager()->Aquire( "vds/stud.dae.twi" );
	m_pStudModelInstance = new TSRModelInstance( pStudModel );

	TSRModel* pBrickModel = ModelManager()->Aquire( "vds/brick.dae.twi" );
	m_pBrickModelInstance = new TSRModelInstance( pBrickModel );

	TSRModel* pWheelModel = ModelManager()->Aquire( "vds/wheel.dae.twi" );
	m_pWheelModelInstance = new TSRModelInstance( pWheelModel );

	TSRModel* pPyramidModel = ModelManager()->Aquire( "vds/pyramid.dae.twi" );
	m_pPyramidModelInstance = new TSRModelInstance( pPyramidModel );

	TSRModel* pWheelAxeModel = ModelManager()->Aquire( "vds/wheelaxe.dae.twi" );
	m_pWheelAxeModelInstance = new TSRModelInstance( pWheelAxeModel );

	TSRModel* pArmKnobModel = ModelManager()->Aquire( "vds/armknob.dae.twi" );
	m_pArmKnobModelInstance = new TSRModelInstance( pArmKnobModel );

	TSRModel* pArmJointModel = ModelManager()->Aquire( "vds/armjoint.dae.twi" );
	m_pArmJointModelInstance = new TSRModelInstance( pArmJointModel );

	TSRModel* pArmModel = ModelManager()->Aquire( "vds/arm.dae.twi" );
	m_pArmBodyModelInstance = new TSRModelInstance( pArmModel );

	TSRModel* pEyeModel = ModelManager()->Aquire( "vds/eye.dae.twi" );
	m_pEyeModelInstance = new TSRModelInstance( pEyeModel );

	TSRModel* pLeverModel = ModelManager()->Aquire( "vds/lever.dae.twi" );
	m_pLeverModelInstance = new TSRModelInstance( pLeverModel );

    m_WheelAxeMesh = new VDSMesh();
	m_WheelAxeMesh->m_pModelInstance = m_pWheelAxeModelInstance;

    CreatePyramidBase();
    CreateInvertedPyramidBase();
    CreateEye();

    /// physics settings..
    TSRPhysicsWorld* pWorld = TSRPhysicsWorld::GetInstance();
    pWorld->SetConnectedBodiesCollisionEnabled( true );
    pWorld->SetGlobalFriction( 2500.0f );
    pWorld->SetGlobalElasticity( 0.5f );
    pWorld->SetGlobalSlipping( 0.01f );
}
Exemplo n.º 2
0
void TSRModel::LoadGeometry( TSRModelGeometry* _pGeometry, TSRFileStream* _pFptr )
{
    // read number of vertex components..
    unsigned int uiShaderFlags = 0;

    fread( &uiShaderFlags, sizeof( unsigned int ), 1, _pFptr );

    // compile the vertex declaration
    _pGeometry->m_uiShaderFlags = uiShaderFlags;

    TSRVertexDeclaration* pVertexDecl = EffectManager()->GetDeclaration( uiShaderFlags );

    // read vertex count
    unsigned int uiVertexCount = 0;
    fread( &uiVertexCount, sizeof( unsigned int ), 1, _pFptr );
    
    // the size of the vertex buffer...
    unsigned int uiVertexBufferSize = 0;
    fread( &uiVertexBufferSize, sizeof( unsigned int ), 1, _pFptr );

	/// index data type..
	eTSRDataType indexDataType = TWISTER_DATATYPE_UINT32;

	/// read index data type..
	fread( &indexDataType, sizeof( eTSRDataType ), 1, _pFptr );

    unsigned int uiIndexCount = 0;
    fread( &uiIndexCount, sizeof( unsigned int ), 1, _pFptr );
    
    // now create the mesh...
    TSRIndexedMesh* pNewMesh = new TSRIndexedMesh( pVertexDecl, indexDataType ); 

	unsigned int uiIndexDataSize = uiIndexCount * g_TwisterDataTypeSize[ indexDataType ];

	/// never create buffers larger than the loading buffers
	if ( uiIndexDataSize > ModelManager()->s_uiLoadingIndexBufferSize )
	{
		assert( "You Cannot Create Index buffers this large!" && 0 );
	}

	/// never create buffers larger than the loading buffers
	if ( uiVertexBufferSize > ModelManager()->s_uiLoadingVertexBufferSize )
	{
		assert( "You Cannot Create Vertex buffers this large!" && 0 );
	}

	/// read the vertex and index in one go.
    if ( uiVertexCount )
    {
		fread( ModelManager()->GetVertexLoadingBuffer(), uiVertexBufferSize, 1, _pFptr );
		if (  uiIndexCount )
		{
			fread( ModelManager()->GetIndexLoadingBuffer(), g_TwisterDataTypeSize[ indexDataType ], uiIndexCount, _pFptr );
		}
    }

	if ( uiIndexCount > 0 )
	{
		pNewMesh->FillRaw( ModelManager()->GetVertexLoadingBuffer(), uiVertexBufferSize, ModelManager()->GetIndexLoadingBuffer(), uiIndexDataSize, indexDataType );
	}
	else
	{
		pNewMesh->TSRMesh::FillRaw( ModelManager()->GetVertexLoadingBuffer(), uiVertexBufferSize );
	}
    
    
    unsigned int uiTriangleSetsCount = 0;
    fread( &uiTriangleSetsCount, sizeof( int ), 1, _pFptr );

    _pGeometry->m_uiTriangleSetsCount = uiTriangleSetsCount;

    if ( uiTriangleSetsCount )
    {
        _pGeometry->m_pTriangleSets = new TSRModelGeometryTriangleSet[ uiTriangleSetsCount ];
        fread( _pGeometry->m_pTriangleSets, sizeof( TSRModelGeometryTriangleSet ), uiTriangleSetsCount, _pFptr );
    }

    pNewMesh->m_RenderMode = TWISTER_RENDERMODE_TRIANGLES;

#ifdef D3D11_RENDERER
    if ( uiShaderFlags & TWISTER_SHADER_FLAG_TESSELATION )
    {
        pNewMesh->m_RenderMode = TWISTER_RENDERMODE_TRIPATCHLIST;

        for ( unsigned int i = 0; i < uiTriangleSetsCount; i++ )
        {
            _pGeometry->m_pTriangleSets[ i ].m_renderMode = TWISTER_RENDERMODE_TRIPATCHLIST;
        }
    }
#endif

    // geometry is ready for rendering !
    _pGeometry->m_pMesh = pNewMesh;

    // read the bounds
    fread( &_pGeometry->m_Bounds, sizeof( TSRBBox ), 1, _pFptr );

    // read the raster state
    fread( &_pGeometry->m_uiRasterizerStateId, sizeof( unsigned int ), 1, _pFptr );
}
Exemplo n.º 3
0
					1, 0, 0, 0,
					0, 1, 0, 0,
					0, 0, 1, 0,
					0, 0, 0, 1);
Matrix4 V = Matrix4(
					1, 0, 0, 0,
					0, 1, 0, 0,
					0, 0, 1, 0,
					0, 0, 0, 1);
Matrix4 P = Matrix4(
					1, 0,  0, 0,
					0, 1,  0, 0,
					0, 0, -1, 0,
					0, 0,  0, 1);

ModelManager mm = ModelManager("./ColorModels");

int main(int argc, char **argv)
{	
	// glut init
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);

	// create window
	glutInitWindowPosition(500, 100);
	glutInitWindowSize(600, 600);
	glutCreateWindow("10420 CS550000 CG HW2 Haley");

	glewInit();
	if(glewIsSupported("GL_VERSION_2_0")){
		printf("Ready for OpenGL 2.0\n");