Exemple #1
0
void RPG_HighlightableComponentManager::OnHandleCallback(IVisCallbackDataObject_cl *data)
{
    if(data->m_pSender == &Vision::Callbacks.OnWorldInit)
    {
        InitShaders();
    }
    else if(data->m_pSender == &Vision::Callbacks.OnWorldDeInit)
    {
        m_xrayTechnique = NULL;
        m_highlightTechnique = NULL;
    }
    else if(data->m_pSender == &Vision::Callbacks.OnReassignShaders)
    {
        InitShaders();
    }
    else if(data->m_pSender == &Vision::Callbacks.OnRenderHook)
    {
        VisRenderHookDataObject_cl const *const renderHookData = static_cast<VisRenderHookDataObject_cl *>(data);
        switch(renderHookData->m_iEntryConst)
        {
        // XRay renders before opaque entities
        case VRH_PRE_PRIMARY_OPAQUE_PASS_ENTITIES:
        {
            if(m_xrayTechnique)
            {
                RenderHighlightableEntities(m_xrayTechnique, m_xrayPassColorRegisters, GetHighlightables());
            }
        }
        break;

        // Highlight renders after opaque entities
        case VRH_PRE_OCCLUSION_TESTS:
        {
            if(m_highlightTechnique)
            {
                RenderHighlightableEntities(m_highlightTechnique, m_highlightPassColorRegisters, GetHighlightables());
            }
        }
        break;

        default:
            break;
        }
    }
    else if (data->m_pSender == &Vision::Callbacks.OnUpdateSceneFinished)
    {
        UpdateHighlightableEntities(GetHighlightables());
    }
}
Exemple #2
0
void dx103DFluidRenderer::Initialize(int gridWidth, int gridHeight, int gridDepth)
{
	Destroy();

	m_vGridDim[0] = float(gridWidth);
	m_vGridDim[1] = float(gridHeight);
	m_vGridDim[2] = float(gridDepth);

	m_fMaxDim = _max( _max( m_vGridDim[0], m_vGridDim[1] ), m_vGridDim[2] );

	// Initialize the grid offset matrix
	{
		// Make a scale matrix to scale the unit-sided box to be unit-length on the 
		//  side/s with maximum dimension 
		D3DXMATRIX scaleM;
		D3DXMatrixIdentity(&scaleM);
		D3DXMatrixScaling(&scaleM, m_vGridDim[0] / m_fMaxDim, m_vGridDim[1] / m_fMaxDim, m_vGridDim[2] / m_fMaxDim);
		// offset grid to be centered at origin
		D3DXMATRIX translationM;
		D3DXMatrixTranslation(&translationM, -0.5, -0.5, -0.5);

		m_gridMatrix = translationM * scaleM;
		//m_gridMatrix.scale(m_vGridDim[0] / m_fMaxDim, m_vGridDim[1] / m_fMaxDim, m_vGridDim[2] / m_fMaxDim);
		//m_gridMatrix.translate_over(-0.5, -0.5, -0.5);
	}

	InitShaders();
	CreateGridBox();
	CreateScreenQuad();
	CreateJitterTexture();
	CreateHHGGTexture();

	m_bInited = true;
}
Exemple #3
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: 
//--------------------------------------------------------------------------------------
BOOL CSample50::Initialize(CFrmFontGLES &m_Font, CFrmTexture* m_pLogoTexture)
{
    // We need the Font for later
    m_pFont = &m_Font;

    // Load the packed resources
    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Demos/AdrenoShaders/Textures/50_Textures.pak" ) )
        return FALSE;

    m_ColorTexture = resource.GetTexture( "ColorPic" );


    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &m_Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5, m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddTextString( (char *)"Press \200 for Help", 1.0f, -1.0f );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_1, (char *)"Previous color space" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_2, (char *)"Next color space" );


	// Initialize the shaders
	if( FALSE == InitShaders() )
	{
		return FALSE;
	}

    return TRUE;
}
bool Renderer::Init(int width, int height)
{
	// Create our SDL window
	mWindow = SDL_CreateWindow("ITP Engine 2 Demo!", 100, 100, width, height, 
		0);

	if (!mWindow)
	{
		SDL_Log("Could not create window.");
		return false;
	}

	mGraphicsDriver = std::make_shared<GraphicsDriver>(GetActiveWindow());
	mInputLayoutCache = std::make_shared<InputLayoutCache>();

	mWidth = width;
	mHeight = height;

	if (!InitFrameBuffer())
	{
		return false;
	}

	if (!InitShaders())
	{
		return false;
	}

	if (!InitSpriteVerts())
	{
		return false;
	}

	return true;
}
void RPG_GuiMinimap_VisionGUI::OnHandleCallback(IVisCallbackDataObject_cl *pData)
{
  if (pData->m_pSender == &Vision::Callbacks.OnReassignShaders)
  {
    InitShaders();
  }
}
Exemple #6
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: 
//--------------------------------------------------------------------------------------
BOOL CSample::Initialize()
{
    m_bShouldRotate = TRUE;

    // Create the font
    if( FALSE == m_Font.Create( "Samples/Fonts/Tuffy12.pak" ) )
        return FALSE;

    // Load the packed resources
    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Samples/Textures/NPR30.pak" ) )
        return FALSE;

    // Create the logo texture
    m_pLogoTexture = resource.GetTexture( "Logo" );

    // Create the cel shading texture
    m_pCelShadingTexture = resource.GetTexture( "Cel-Shading" );

    // Create the ray gun texture
    m_pRayGunTexture = resource.GetTexture( "RayGun" );

    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &m_Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5,
                                m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddTextString( "Press " FRM_FONT_KEY_0 " for Help", 1.0f, -1.0f );
    m_UserInterface.AddFloatVariable( &m_fOutlineWidth , "Outline Width", "%3.2f" );
    m_UserInterface.AddFloatVariable( &m_vLightPosition.x, "Light Pos", "%4.2f" );
    m_UserInterface.AddFloatVariable( &m_fAmbient, "Ambient Light", "%4.2f" );
    m_UserInterface.AddBoolVariable( &m_bShouldRotate, "Should Rotate" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_STAR, "Toggle Orientation" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_0, "Toggle Info Pane" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_1, "Decrease Outline Width" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_2, "Increase Outline Width" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_3, "Decrease Ambient Light" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_4, "Increase Ambient Light" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_5, "Toggle Rotation" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_DPAD, "Move Light" );

    // Load the mesh
    if( FALSE == m_Mesh.Load( "Samples/Meshes/RayGun.mesh" ) )
        return FALSE;
    if( FALSE == m_Mesh.MakeDrawable() )
        return FALSE;

    // Initialize the shaders
    if( FALSE == InitShaders() )
        return FALSE;
    
    glClearColor( 0.5f, 0.5f, 0.5f, 0.0f );
    glEnable( GL_DEPTH_TEST );

    Resize();

    return TRUE;
}
Exemple #7
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: 
//--------------------------------------------------------------------------------------
BOOL CSample31::Initialize(CFrmFontGLES &m_Font, CFrmTexture* m_pLogoTexture)
{
    m_ShouldRotate = TRUE;

    // Load the packed resources
    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Demos/AdrenoShaders/Textures/31_Textures.pak" ) )
        return FALSE;

    // Create textures
    m_GodRayTexture = resource.GetTexture( "GodRay1" );

    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &m_Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5, m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddTextString( (char *)"Press \200 for Help", 1.0f, -1.0f );
    m_UserInterface.AddBoolVariable( &m_ShouldRotate, (char *)"Should Rotate" );
    m_UserInterface.AddFloatVariable( &m_RayExtruderShader.RayLength, (char *)"Ray length" );
    m_UserInterface.AddFloatVariable( &m_CutoutShader.OccluderThreshold, (char *)"Occluder pickup distance" );
    m_UserInterface.AddFloatVariable( &m_CutoutShader.OccluderFadeout, (char *)"Occluder fade distance" );
    m_UserInterface.AddFloatVariable( &m_CombineShader.RayOpacity, (char *)"Ray opacity" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_STAR, (char *)"Toggle Orientation" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_1, (char *)"Decrease ray length" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_2, (char *)"Increase ray length" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_3, (char *)"Decrease pickup dist" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_4, (char *)"Increase pickup dist" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_5, (char *)"Decrease pickup fade" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_6, (char *)"Increase pickup fade" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_7, (char *)"Decrease opacity" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_8, (char *)"Increase opacity" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_9, (char *)"Toggle Rotation" );

    // Load the mesh
    if( FALSE == m_Mesh.Load( "Demos/AdrenoShaders/Meshes/Map3.mesh" ) )
        return FALSE;
    m_CameraPos = FRMVECTOR3( 6.2f, 2.0f, 0.0f );
    float Split = 1.1f;
    float yAdjust = -0.05f;
    ModelScale31 = 1.0f;

    if( FALSE == m_Mesh.MakeDrawable( &resource ) )
        return FALSE;

	// Initialize the shaders
	if( FALSE == InitShaders() )
	{
		return FALSE;
	}

    m_AmbientLight = FRMVECTOR4( 0.05f, 0.05f, 0.05f, 0.0f );

    // Set up the objects
    m_Object.Drawable = &m_Mesh;
    m_Object.Position.y += yAdjust;

    return TRUE;
}
void RPG_GuiMinimap_VisionGUI::OnActivate()
{
  VImageControl::OnActivate();

  InitShaders();

  // Reload shaders for reloading in vForge
  Vision::Callbacks.OnReassignShaders += this;
}
 void CS_Renderer::Initialize()
 {
   CreateBuffers();
   if (!shader && !computeshader && !texture)
   {
     InitShaders();
     LoadTexture();
   }
 }
Exemple #10
0
void InitGL(RenderContext *rcx)
{
	glewExperimental = GL_TRUE; 
	if (glewInit() != GLEW_OK) 
	{
		std::cout << "Unable to initilize GLEW..." << std::endl;
		Cleanup(rcx);
		exit(0);
	}
    InitShaders();
}
Exemple #11
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: Initialize the scene.
//--------------------------------------------------------------------------------------
BOOL CSample::Initialize()
{
    // Create the font
    if( FALSE == m_Font.Create( "Samples/Fonts/Tuffy12.pak" ) )
        return FALSE;

    // Load the packed resources
    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Samples/Textures/MultiSample.pak" ) )
        return FALSE;

    // Create the logo texture
    m_pLogoTexture = resource.GetTexture( "Logo" );

    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &m_Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5,
                                m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddTextString( "Press " FRM_FONT_KEY_0 " for Help", 1.0f, -1.0f );
    m_UserInterface.AddBoolVariable( &m_bRotationOn, "Rotation", "On", "Off" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_STAR, "Toggle Orientation" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_0, "Toggle Info Pane" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_1, "Start Rotating" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_2, "Stop Rotating" );

    InitProjectionMatrix();

    /* Set up line width */
    glLineWidth(1.0f);

    /* Set up a Framebuffer Object */
    glGenFramebuffers(1,&m_fboId);

    glBindFramebuffer(GL_FRAMEBUFFER, m_fboId);

    InitVertexBufferObject();

    /* Note that our FBO does not use a depth attachment. Safe to disable the depth writes */
    glDepthMask(GL_FALSE);

    InitVertexArrayObject();

    // Initialize the shaders
    if( FALSE == InitShaders() )
        return FALSE;

    InitTexture();

    /* Set up clear color */
    glClearColor(0.0f, 0.75f, 1.0f, 1.0f);

    return TRUE;
}
Exemple #12
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: 
//--------------------------------------------------------------------------------------
BOOL CSample::Initialize()
{
    m_bShouldRotate = TRUE;
    m_fCheckerFrequency = 30.0f;
    m_fWoodFrequency    = 10.0f;
    m_MarbleTurbScale   = 50.0f;
    m_nPTIndex = PT_CHECKER;

    // Create the font
    if( FALSE == m_Font.Create( "Samples/Fonts/Tuffy12.pak" ) )
        return FALSE;

    // Load the packed resources
    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Samples/Textures/ProceduralTexture.pak" ) )
        return FALSE;

    // Create the logo texture
    m_pLogoTexture = resource.GetTexture( "Logo" );

    // Create the 3D noise texture
    CreateNoiseTexture3D( 128 );

    // Create the 3D turbulence texture
    CreateTurbTexture3D( 64 );

    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &m_Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5,
                                m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddTextString( "Press " FRM_FONT_KEY_0 " for Help", 1.0f, -1.0f );
    m_UserInterface.AddFloatVariable( &m_fCheckerFrequency, "Checker Freq", "%4.2f" );
    m_UserInterface.AddFloatVariable( &m_fWoodFrequency, "Wood Freq", "%4.2f" );
    m_UserInterface.AddFloatVariable( &m_MarbleTurbScale, "Marble Scale", "%4.2f" );
    m_UserInterface.AddBoolVariable( &m_bShouldRotate, "Should Rotate" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_STAR, "Toggle Orientation" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_0, "Toggle Info Pane" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_1, "Decr Frequency" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_2, "Incr Frequency" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_3, "Next Procedural Texture" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_4, "Toggle Rotation" );
    // Create the mesh
    if( FALSE == m_Mesh.Load( "Samples/Meshes/Bunny.mesh" ) )
        return FALSE;
    if( FALSE == m_Mesh.MakeDrawable() )
        return FALSE;

    // Initialize the shaders
    if( FALSE == InitShaders() )
        return FALSE;
    
    return TRUE;
}
Exemple #13
0
void LandscapeDebugNode::SetDebugHeightmapImage(Heightmap * _debugHeightmapImage, const AABBox3 & _box)
{
    box = _box;
    
    SafeRelease(heightmap);
    heightmap = SafeRetain(_debugHeightmapImage);

    debugVertices.resize(heightmap->Size() * heightmap->Size());
	debugIndices.resize(heightmap->Size() * heightmap->Size() * 6);
    
    ReleaseShaders();
    InitShaders();
}
Exemple #14
0
/**
 * Creates the OpenGL ES 2.X context and builds the shaders.
 * @param raspitex_state A pointer to the GL preview state.
 * @return Zero if successful.
 */
static int motion_init(RASPITEX_STATE *state)
{
    int rc = raspitexutil_gl_init_2_0(state);
    if (rc != 0)
       goto end;

    rc = raspitexutil_build_shader_program(&motion_shader);

		//Call initialisation functions in c++ part (Graphics.cpp)
		InitTextures(state->width, state->height);
		InitShaders();
end:
    return rc;
}
void ModelCanvas::InitGL()
{
	video.InitGL();

	GLenum err = 0;

	init = true;

	// load up our shaders
	InitShaders();

	// init the default view
	InitView();
}
void glut_viewer_hdr_init() {
    glut_viewer_get_screen_size(&WINDOW_WIDTH, &WINDOW_HEIGHT) ;
    if(!InitShaders()) {
        std::cerr << "could not init shaders" << std::endl ;
        exit(-1) ;
    }
    if(!InitFBO()) {
        std::cerr << "could not init FBO" << std::endl ;
        exit(-1) ;
    }
    glClampColorARB(GL_CLAMP_VERTEX_COLOR_ARB, GL_FALSE) ;
    glClampColorARB(GL_CLAMP_FRAGMENT_COLOR_ARB, GL_FALSE) ;
    InitBlur() ;
}
Exemple #17
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: 
//--------------------------------------------------------------------------------------
BOOL CSample34::Initialize(CFrmFontGLES &Font, CFrmTexture* m_pLogoTexture)
{
    m_ShouldRotate = TRUE;
    m_Preview = false;

    // Create the font
    // Load the packed resources
    // NOTE SAME TEXTURES AS 27
    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Demos/AdrenoShaders/Textures/27_Textures.pak" ) )
        return FALSE;

    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5,
                                m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddTextString( (char *)"Press \200 for Help", 1.0f, -1.0f );
    m_UserInterface.AddBoolVariable( &m_ShouldRotate, (char *)"Should Rotate" );
    m_UserInterface.AddFloatVariable( &m_CombineShader.GaussSpread, (char *)"Gauss filter spread" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_STAR, (char *)"Toggle Orientation" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_6, (char *)"Decrease gauss spread" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_7, (char *)"Increase gauss spread" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_8, (char *)"Toggle Rotation" );

    // Load the mesh
    if( FALSE == m_Mesh.Load( "Demos/AdrenoShaders/Meshes/Map3.mesh" ) )
        return FALSE;
    m_CameraPos = FRMVECTOR3( 6.2f, 2.0f, 0.0f );
    float Split = 1.1f;
    float yAdjust = -0.05f;

    if( FALSE == m_Mesh.MakeDrawable( &resource ) )
        return FALSE;

	// Initialize the shaders
	if( FALSE == InitShaders() )
	{
		return FALSE;
	}

    m_AmbientLight = FRMVECTOR4( 0.1f, 0.1f, 0.1f, 0.0f );

    // Set up the objects
    m_Object.Drawable = &m_Mesh;
    m_Object.Position.y += yAdjust;

    return TRUE;
}
Exemple #18
0
void GLWidget::initializeGL()
{
    initializeOpenGLFunctions();

    glEnable (GL_DEPTH_TEST);
    glEnable (GL_CULL_FACE);
    glEnable (GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_TEXTURE_2D);   

    #define PROGRAM_VERTEX_ATTRIBUTE 0
    #define PROGRAM_TEXCOORD_ATTRIBUTE 1
    #define ProgramColor 2
    InitShaders();
}
Exemple #19
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: 
//--------------------------------------------------------------------------------------
BOOL CSample::Initialize()
{
    // Create the font
    if( FALSE == m_Font.Create( "Samples/Fonts/Tuffy12.pak" ) )
        return FALSE;

    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Samples/Textures/SWE.pak" ) )
        return FALSE;

    // Create the logo texture
    m_pLogoTexture = resource.GetTexture( "Logo" );

    m_pBaseTexture = resource.GetTexture( "Marble" );
    m_pEnvTexture = resource.GetTexture( "Env" );
    m_pNormalTexture = resource.GetTexture( "Normal" );

    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &m_Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5,
                                m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_0, "Toggle Info Pane" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_1, "Reset Simulation" );

    // Initialize the shaders
    if( FALSE == InitShaders() )
        return FALSE;
    
    glClearColor( 0.5f, 0.5f, 0.5f, 1.0f );

	// initialize simulation
	m_pLiquid = new Liquid();

#ifdef UNDER_CE
	m_pLiquid->Init(15, 20);
	m_pLiquid->ResetValues();
	m_pLiquid->Finger(0.7,0.3);
#else
	m_pLiquid->Init(24, 32);
	m_pLiquid->ResetValues();
    m_UserInterface.AddTextString( "Click mouse to start", 1.f, -1.f);
#endif // UNDER_CE

    return TRUE;
}
Exemple #20
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: 
//--------------------------------------------------------------------------------------
BOOL CSample::Initialize()
{
    // Create the font
    if( FALSE == m_Font.Create( "Samples/Fonts/Tuffy12.pak" ) )
        return FALSE;

    // Load the packed resources
    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Samples/Textures/MotionBlur.pak" ) )
        return FALSE;

    // Create the logo texture
    m_pLogoTexture = resource.GetTexture( "Logo" );

    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &m_Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5,
                                m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddTextString( "Press " FRM_FONT_KEY_0 " for Help", 1.0f, -1.0f );
    m_UserInterface.AddBoolVariable( &m_bMotionBlurOn, "Motion Blur", "On", "Off" );
    m_UserInterface.AddFloatVariable( &m_fSpeed, "Speed", "%4.2f" );
    m_UserInterface.AddFloatVariable( &m_fShutterDuration, "Shutter Duration", "%4.4f sec" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_STAR, "Toggle Orientation" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_0, "Toggle Info Pane" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_1, "Decrease Speed" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_2, "Increase Speed" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_3, "Decrease Shutter Duration" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_4, "Increase Shutter Duration" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_5, "Toggle Motion Blur (on/off)" );

    // Initialize the shaders
    if( FALSE == InitShaders() )
        return FALSE;

    // Setup the view
    FRMVECTOR3 vPosition   = FRMVECTOR3( 0.0f, 0.0f, 4.0f );
    FRMVECTOR3 vLookAt     = FRMVECTOR3( 0.0f, 0.0f, 0.0f );
    FRMVECTOR3 vUp         = FRMVECTOR3( 0.0f, 1.0f, 0.0f );
    m_matView = FrmMatrixLookAtRH( vPosition, vLookAt, vUp );

    glClearColor( 0.5f, 0.5f, 0.5f, 1.0f );

    return TRUE;
}
Exemple #21
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: 
//--------------------------------------------------------------------------------------
BOOL CSample14b::Initialize(CFrmFontGLES &m_Font, CFrmTexture* m_pLogoTexture)
{
    m_bShouldRotate = TRUE;

    // Load the packed resources
    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Demos/AdrenoShaders/Textures/14b_Textures.pak" ) )
        return FALSE;

    // load the color ramp for the toon shader
    m_ToonShader.ColorRampTexture = resource.GetTexture( "ToonColorRamp" );

    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &m_Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5,
                                m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddTextString( (char *)"Press \200 for Help", 1.0f, -1.0f );
    m_UserInterface.AddBoolVariable( &m_bShouldRotate, (char *)"Should Rotate" );
    m_UserInterface.AddFloatVariable( &m_EdgeBias , (char *)"Edge detection", (char *)"%3.4f" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_STAR, (char *)"Toggle Orientation" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_0, (char *)"Toggle Info Pane" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_1, (char *)"Decrease edge detection" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_2, (char *)"Increase edge detection" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_3, (char *)"Toggle Rotation" );

    // Load the mesh
    if( FALSE == m_Mesh.Load( "Demos/AdrenoShaders/Meshes/Teapot.mesh" ) )
        return FALSE;
    if( FALSE == m_Mesh.MakeDrawable() )
        return FALSE;

	// Initialize the shaders
	if( FALSE == InitShaders() )
	{
		return FALSE;
	}

    glEnable( GL_DEPTH_TEST );

    return TRUE;
}
Exemple #22
0
// Initialize SDL and Opengl and others
void MainGame::InitSystems()
{
	// Initialize SDL
	SDL_Init(SDL_INIT_EVERYTHING);

	// Using double buffer to prevent flickering
	SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);

	//Open an SDL window
	_window = SDL_CreateWindow("Lemon Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, _screenWidth, _screenHeight, SDL_WINDOW_OPENGL);
	if (_window == nullptr)
	{
		FatalError("SDL window could not be created");
	}

	// Set up OpenGL context
	SDL_GLContext glContext = SDL_GL_CreateContext(_window);
	if (glContext == nullptr)
	{
		FatalError("SDL_GL_Context could not be created");
	}

	// Set up glew (optional but recommended)
	//glewExperimental = true; // For any crashes
	GLenum error = glewInit();
	if (error != GLEW_OK)
	{
		FatalError("Could not initalize glew");
	}	

	// Check the OpenGL version
	std::printf("***  OpenGL Version: %s  ***\n", glGetString(GL_VERSION));

	//Set the background color to blue
	glClearColor(0.0f, 0.0f, 1.0f, 1.0f);

	// set Vsync to monitor rate
	SDL_GL_SetSwapInterval(0);

	InitShaders();
}
/**
 * Initialize the render manager
 *
 * @param inBufferSizeX Width of the full screen render buffer 
 * @param inBufferSizeY Height of the full screen render buffer 
 */
bool RenderManager::Init(const int inBufferSizeX, const int inBufferSizeY)
{
	// Set the size of the render buffers
	fullScreenBufferSizeX = inBufferSizeX;
	fullScreenBufferSizeY = inBufferSizeY;

	gRenderAPI->Init(fullScreenBufferSizeX, fullScreenBufferSizeY, defaultSceneColorBuffer, defaultSceneDepthBuffer); 
	InitRenderTargets();
	InitShaders();
	InitFonts();

	// Create full-screen buffers
	VertexContainer_P3U2 VertexData[] = 
	{
		-1,1,0,		0,0,
		1,1,0,		1,0,
		-1,-1,0,	0,1,
		1,-1,0,		1,1
	};
	
	short IndexData[] = 
	{
		0, 1, 2,
		1, 3, 2
	};

	// Init full screen buffers
	fullScreenVB = gRenderAPI->CreateVertexBuffer(VFMT_P3U2, 4, &VertexData);
	fullScreenIB = gRenderAPI->CreateIndexBuffer(IFMT_16Bit, 6, &IndexData);

	// Init simple primitives
	unitSphereMesh = gMeshManager.LoadStaticMesh("UnitSphere.nff");
	unitConeMesh = gMeshManager.LoadStaticMesh("UnitCone.nff");

	// Init textures
	defaultTexture = gRenderAPI->CreateTexture2DFromFile("checkerboard.png");

	return true;
}
Exemple #24
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: 
//--------------------------------------------------------------------------------------
BOOL CSample::Initialize()
{
    // Create the font
    if( FALSE == m_Font.Create( "Samples/Fonts/Tuffy12.pak" ) )
        return FALSE;

    // Load the packed resources
    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Samples/Textures/CubeMapReflection.pak" ) )
        return FALSE;

    // Create the logo texture
    m_pLogoTexture = resource.GetTexture( "Logo" );

    // Create the textures
    m_pSatelliteTexture = resource.GetTexture( "TennisBall" );
    m_pPlaqueTexture    = resource.GetTexture( "Trophy_Plaque" );
    m_pEnvironmentMap   = resource.GetCubeMap( "BedroomCubeMap" );

    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &m_Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5,
                                m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddTextString( "Press " FRM_FONT_KEY_0 " for Help", 1.0f, -1.0f );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_STAR, "Toggle Orientation" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_0, "Toggle Info Pane" );

    // Initialize the shaders
    if( FALSE == InitShaders() )
        return FALSE;

    // Load a mesh for the center of the screen
    if( FALSE == m_MainObject.Load( "Samples/Meshes/trophy.mesh" ) )
        return FALSE;
    if( FALSE == m_MainObject.MakeDrawable( &resource ) )
        return FALSE;
    
    // Load a mesh to use for the satellite objects
    if( FALSE == m_SatelliteObject.Load( "Samples/Meshes/tennisBall.mesh" ) )
        return FALSE;
    if( FALSE == m_SatelliteObject.MakeDrawable( &resource ) )
        return FALSE;

    // Create the reflection cube map 
    FrmCreateCubeMap( ENVMAP_SIZE, GL_UNSIGNED_SHORT_5_5_5_1, &m_hReflectionMap );

    // Create an FBO for offscreen rendering
    glGenFramebuffers( 1, &m_hFBOFramebufferID );

    // Create a depth-buffer for offscreen rendering
    FrmCreateRenderBuffer( ENVMAP_SIZE, ENVMAP_SIZE, GL_DEPTH_COMPONENT16,
                           &m_hFBODepthbufferID );

    FRMVECTOR3 vPosition = FRMVECTOR3( -0.2f, 0.25f, 1.0f );
    FRMVECTOR3 vLookAt   = FRMVECTOR3( 0.0f, -0.1f, 0.0f );
    FRMVECTOR3 vUp       = FRMVECTOR3( 0.0f, 1.0f, 0.0f );
    m_matView = FrmMatrixLookAtRH( vPosition, vLookAt, vUp );

    return TRUE;
}
Exemple #25
0
pipeline::pipeline(HWND hWndin):hWnd(hWndin)
{
	InitDevSwap();
	InitShaders();
	InitConstBuff();
}
Exemple #26
0
void InitPipeline(){
	InitShaders();
	//initializing other things later
}
Exemple #27
0
int Initialize (int argc, char *argv[])
{
/*---*/PrintLog ("Initializing data\n");
signal (SIGABRT, D2SignalHandler);
signal (SIGFPE, D2SignalHandler);
signal (SIGILL, D2SignalHandler);
signal (SIGINT, D2SignalHandler);
signal (SIGSEGV, D2SignalHandler);
signal (SIGTERM, D2SignalHandler);
#ifdef _WIN32
SDL_SetSpecialKeyHandling (0);
#endif
hogFileManager.Init ("", "");
InitGameStates ();
gameData.Init ();
InitExtraGameInfo ();
InitNetworkData ();
InitGameOptions (0);
InitArgs (argc, argv);
GetAppFolders ();
if (FindArg ("-debug-printlog") || FindArg ("-printlog")) {
	   char fnErr [FILENAME_LEN];
#ifdef __unix__
	sprintf (fnErr, "%s/d2x.log", getenv ("HOME"));
	fErr = fopen (fnErr, "wt");
#else
	sprintf (fnErr, "%s/d2x.log", gameFolders.szGameDir);
	fErr = fopen (fnErr, "wt");
#endif
	}
PrintLog ("%s\n", DESCENT_VERSION);
InitArgs (argc, argv);
GetAppFolders ();
#ifdef D2X_MEM_HANDLER
MemInit ();
#endif
error_init (NULL, NULL);
*szAutoHogFile =
*szAutoMission = '\0';
EvalArgs ();
InitGameOptions (1);
DefaultAllSettings ();
gameOpts->render.nMathFormat = gameOpts->render.nDefMathFormat;
/*---*/PrintLog ("Loading text resources\n");
/*---*/PrintLog ("Loading main hog file\n");
if (!(hogFileManager.Init ("descent2.hog", gameFolders.szDataDir) || 
	  (gameStates.app.bDemoData = hogFileManager.Init ("d2demo.hog", gameFolders.szDataDir)))) {
	/*---*/PrintLog ("Descent 2 data not found\n");
	Error (TXT_NO_HOG2);
	}
LoadGameTexts ();
/*---*/PrintLog ("Reading configuration file\n");
ReadConfigFile ();
if (!InitGraphics ())
	return 1;
console.Setup (SMALL_FONT, &screen, CON_NUM_LINES, 0, 0, screen.Width (), screen.Height () / 2);
if (gameStates.app.bProgressBars && gameOpts->menus.nStyle)
	InitializeGauge ();
else {
	CMenu m (1);
	int key = 0;
	m.AddGauge ("", -1, 1000); // dummy for InitializePoll()
	messageBox.Show (TXT_INITIALIZING);
	for (loadOp = 0; loadOp < InitGaugeSize (); )
		InitializePoll (m, key, 0, 0);
	}
messageBox.Clear ();
PrintBanner ();
if (!gameStates.app.bAutoRunMission) {
	/*---*/PrintLog ("Showing title screens\n");
	if (!ShowTitleScreens ())
		ShowLoadingScreen ();
	}
if (FindArg ("-norun"))
	return 0;
/*---*/PrintLog ("Loading hires models\n");
LoadHiresModels (0);
LoadModelData ();
InitShaders (); //required for some menus to show all possible choices
return 0;
}
Exemple #28
0
void
OpenGL::SetupContext()
{
#if defined(HAVE_DYNAMIC_EGL)
  egl = EGLInit();
#endif

  texture_non_power_of_two = SupportsNonPowerOfTwoTextures();

#ifdef HAVE_OES_DRAW_TEXTURE
  oes_draw_texture = CheckOESDrawTexture();
#endif

#ifdef ANDROID
  native_view->SetTexturePowerOfTwo(texture_non_power_of_two);

  vertex_buffer_object = EnableVBO();
#endif

#ifdef HAVE_OES_MAPBUFFER
  mapbuffer = IsExtensionSupported("GL_OES_mapbuffer");
#endif

#ifdef HAVE_DYNAMIC_MAPBUFFER
  if (mapbuffer) {
    GLExt::map_buffer = (PFNGLMAPBUFFEROESPROC)
      eglGetProcAddress("glMapBufferOES");
    GLExt::unmap_buffer = (PFNGLUNMAPBUFFEROESPROC)
      eglGetProcAddress("glUnmapBufferOES");
    if (GLExt::map_buffer == nullptr || GLExt::unmap_buffer == nullptr)
      mapbuffer = false;
  }
#endif

#ifdef HAVE_DYNAMIC_MULTI_DRAW_ARRAYS
  if (IsExtensionSupported("GL_EXT_multi_draw_arrays")) {
    GLExt::multi_draw_arrays = (PFNGLMULTIDRAWARRAYSEXTPROC)
      dlsym(RTLD_DEFAULT, "glMultiDrawArraysEXT");
    GLExt::multi_draw_elements = (PFNGLMULTIDRAWELEMENTSEXTPROC)
      dlsym(RTLD_DEFAULT, "glMultiDrawElementsEXT");
  } else {
    GLExt::multi_draw_arrays = nullptr;
    GLExt::multi_draw_elements = nullptr;
  }
#endif

  frame_buffer_object = CheckFBO() && FBO::Initialise();
  if (frame_buffer_object) {
    render_buffer_depth_stencil = CheckDepthStencil();

    render_buffer_stencil = CheckStencil();
    if (!render_buffer_stencil)
      /* fall back to a packed depth+stencil format */
      render_buffer_stencil = render_buffer_depth_stencil;
  }

  GLfloat lineWidthRange[2] = {0.0f, 0.0f};
  glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, lineWidthRange);
  max_line_width = lineWidthRange[1];

  glDisable(GL_DEPTH_TEST);
  glDisable(GL_DITHER);
#ifndef HAVE_GLES2
  glDisable(GL_LIGHTING);
#endif

#ifndef USE_GLSL
  glEnableClientState(GL_VERTEX_ARRAY);
#endif

  InitShapes();

#ifdef USE_GLSL
  InitShaders();
#endif

#ifndef HAVE_GLES
  ::glGetIntegerv(GL_MAX_ATTRIB_STACK_DEPTH, &max_attrib_stack_depth);
#endif
}
Exemple #29
0
//--------------------------------------------------------------------------------------
// Name: Initialize()
// Desc: 
//--------------------------------------------------------------------------------------
BOOL CSample::Initialize()
{
    // Initialize sample variables
    m_nCurMeshIndex  = CUBE_MESH;
    m_bShowShadowMap = TRUE;
    m_vLightPosition = FRMVECTOR3( 0.0f, 8.0f, 0.01f );

    // Create the font
    if( FALSE == m_Font.Create( "Samples/Fonts/Tuffy12.pak" ) )
        return FALSE;

    // Load the packed resources
    CFrmPackedResourceGLES resource;
    if( FALSE == resource.LoadFromFile( "Samples/Textures/ShadowMap30.pak" ) )
        return FALSE;

    // Create the logo texture
    m_pLogoTexture = resource.GetTexture( "Logo" );

    // Setup the user interface
    if( FALSE == m_UserInterface.Initialize( &m_Font, m_strName ) )
        return FALSE;
    m_UserInterface.AddOverlay( m_pLogoTexture->m_hTextureHandle, -5, -5,
                                m_pLogoTexture->m_nWidth, m_pLogoTexture->m_nHeight );
    m_UserInterface.AddTextString( "Press " FRM_FONT_KEY_0 " for Help", 1.0f, -1.0f, 1.0f );
    m_UserInterface.AddIntVariable( &m_nShadowMapFBOTextureWidth , "Shadow Map Size", "%d" );
    m_UserInterface.AddBoolVariable( &m_bUsePCF , "PCF On", "True", "False" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_0, "Toggle Help" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_1, "Next Model" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_2, "Next Floor" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_3, "Decrease Shadow Map Size" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_4, "Increase Shadow Map Size" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_5, "Toggle PCF" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_6, "Toggle Shadow Map Display" );
    m_UserInterface.AddHelpKey( FRM_FONT_KEY_DPAD, "Rotate light" );

     // Load the meshes
    if( FALSE == m_Floor[ PLANE_FLOOR ].Load( "Samples/Meshes/Plane.mesh" ) )
        return FALSE;
    if( FALSE == m_Floor[ PLANE_FLOOR ].MakeDrawable() )
        return FALSE;

    if( FALSE == m_Floor[ TERRAIN_FLOOR ].Load( "Samples/Meshes/Terrain.mesh" ) )
        return FALSE;
    if( FALSE == m_Floor[ TERRAIN_FLOOR ].MakeDrawable() )
        return FALSE;

    if( FALSE == m_Meshes[ CUBE_MESH ].Load( "Samples/Meshes/Cube.mesh" ) )
        return FALSE;
    if( FALSE == m_Meshes[ CUBE_MESH ].MakeDrawable() )
        return FALSE;

    if( FALSE == m_Meshes[ SPHERE_MESH ].Load( "Samples/Meshes/Sphere.mesh" ) )
        return FALSE;
    if( FALSE == m_Meshes[ SPHERE_MESH ].MakeDrawable() )
        return FALSE;

    if( FALSE == m_Meshes[ BUMPY_SPHERE_MESH ].Load( "Samples/Meshes/BumpySphere.mesh" ) )
        return FALSE;
    if( FALSE == m_Meshes[ BUMPY_SPHERE_MESH ].MakeDrawable() )
        return FALSE;

    if( FALSE == m_Meshes[ TORUS_MESH ].Load( "Samples/Meshes/Torus.mesh" ) )
        return FALSE;
    if( FALSE == m_Meshes[ TORUS_MESH ].MakeDrawable() )
        return FALSE;

    if( FALSE == m_Meshes[ ROCKET_MESH ].Load( "Samples/Meshes/Rocket.mesh" ) )
        return FALSE;
    if( FALSE == m_Meshes[ ROCKET_MESH ].MakeDrawable() )
        return FALSE;

    // Initialize the shaders
    if( FALSE == InitShaders() )
        return FALSE;

    // Initialize the camera and light perspective matrices
    FLOAT32 fAspect = (FLOAT32)m_nWidth / (FLOAT32)m_nHeight;
    m_matCameraPersp = FrmMatrixPerspectiveFovRH( FRM_PI/4.0f, fAspect, 1.0f, 100.0f );
    m_matLightPersp  = FrmMatrixPerspectiveFovRH( FRM_PI/4.0f, 1.0f, 5.0f, 20.0f );

    // Initialize the viewport
    glViewport( 0, 0, m_nWidth, m_nHeight );

    // Setup the FBOs
    m_nShadowMapFBOTextureExp    = 7;
    m_nShadowMapFBOTextureWidth  = 2 << m_nShadowMapFBOTextureExp;
    m_nShadowMapFBOTextureHeight = 2 << m_nShadowMapFBOTextureExp;
    CreateShadowMapFBO();
    CreateLightingFBO();

    // Setup the camera view matrix
    FRMVECTOR3 vCameraPosition = FRMVECTOR3( 0.0f, 5.0f, 10.0f );
    FRMVECTOR3 vCameraLookAt   = FRMVECTOR3( 0.0f, 0.0f, -2.0f );
    FRMVECTOR3 vCameraUp       = FRMVECTOR3( 0.0f, 1.0f, 0.0f );
    m_matCameraView = FrmMatrixLookAtRH( vCameraPosition, vCameraLookAt, vCameraUp );

    // Setup the floor's camera relative model view projection matrix
    FRMMATRIX4X4 matFloorScale            = FrmMatrixScale( 5.0f, 5.0f, 5.0f );
    FRMMATRIX4X4 matFloorTranslate        = FrmMatrixTranslate( 0.0f, -0.5f, 0.0f );
    m_matFloorModel                       = FrmMatrixMultiply( matFloorScale, matFloorTranslate );
    m_matCameraFloorModelView             = FrmMatrixMultiply( m_matFloorModel, m_matCameraView );
    m_matCameraFloorModelViewProj         = FrmMatrixMultiply( m_matCameraFloorModelView, m_matCameraPersp );
    m_matCameraFloorNormal                = FrmMatrixNormal( m_matCameraFloorModelView );

    // Setup the light look at and up vectors
    m_vLightLookAt = FRMVECTOR3( 0.0f, 0.0f, 0.0f );
    m_vLightUp     = FRMVECTOR3( 0.0f, 1.0f, 0.0f );

    // Create our scale and bias matrix that is used to convert the coordinates of vertices that are multiplied by a 
    // model view projection matrix from the range [-1, 1] to the range [0, 1], so that they can be used for texture lookups
    m_matScaleAndBias.M( 0, 0 ) = 0.5f; m_matScaleAndBias.M( 0, 1 ) = 0.0f; m_matScaleAndBias.M( 0, 2 ) = 0.0f; m_matScaleAndBias.M( 0, 3 ) = 0.0f;  
    m_matScaleAndBias.M( 1, 0 ) = 0.0f; m_matScaleAndBias.M( 1, 1 ) = 0.5f; m_matScaleAndBias.M( 1, 2 ) = 0.0f; m_matScaleAndBias.M( 1, 3 ) = 0.0f;  
    m_matScaleAndBias.M( 2, 0 ) = 0.0f; m_matScaleAndBias.M( 2, 1 ) = 0.0f; m_matScaleAndBias.M( 2, 2 ) = 0.5f; m_matScaleAndBias.M( 2, 3 ) = 0.0f;  
    m_matScaleAndBias.M( 3, 0 ) = 0.5f; m_matScaleAndBias.M( 3, 1 ) = 0.5f; m_matScaleAndBias.M( 3, 2 ) = 0.5f; m_matScaleAndBias.M( 3, 3 ) = 1.0f;  

    // Setup GL state
    glClearColor( 0.5f, 0.5f, 0.5f, 1.0f );
    glEnable( GL_CULL_FACE );
    glCullFace( GL_BACK );
    glEnable( GL_DEPTH_TEST );
    glDepthFunc( GL_LEQUAL );

	// Initialization complete
	m_Initialize = TRUE;

    return TRUE;
}
Exemple #30
0
int main(int argc, char *argv[])
{
  string inputSkeleton;
  string inputMotion;
  SMRMotion motion;

  ParamHandler argh;
  argh.AddLong("motion", 'm').SetString().SetDesc("input motion file" , "<file>");
  argh.AddLong("skeleton", 's').SetString().SetDesc("input skeleton file" , "<file>");
  argh.AddLong("help", 'h').SetBool().SetDesc("Displays quick manual.");

  argh.StartParse(argc, argv);
  for(;;)
  {
    int c = argh.GetParam();
    if(c == -1)break;
    switch(c)
    {
    case 's': inputSkeleton = argh.GetString(); break;//worst = argh.GetBool(); break;
    case 'm': inputMotion = argh.GetString(); break;
    default :
      printf(
        "*** SMR simple viewer demo ***\n"
        "\n Usage: motionPlayer [<option> [<...>]] \n"
        "\n This demo lets you play bvh or asf/amc animations\n");
      argh.ListOptions();
      printf("\nNo warranty whatsoever.\n");
      return 0;
    }
  }

  if (inputMotion.find(".amc",0) !=  string::npos )
  {
    if (inputSkeleton.find(".asf") == string::npos )
    {
      cout << "You shall specify an asf skeleton file with an amc file" << endl;
      return 0;
    }else
    {
      motion = loadMotionFromAcclaim( getFileName(inputSkeleton), getFileName(inputMotion) );
      myMotionPlayer = new SMRMotionPlayer( &motion );
    }
  }else if (inputMotion.find(".bvh",0) !=  string::npos )
  {
    motion = loadMotionFromBVH( getFileName(inputMotion) );
    myMotionPlayer = new SMRMotionPlayer( &motion );
  }else if (inputSkeleton.find(".vsk",0) !=  string::npos )
  {
    motion = loadMotionFromVSK( inputSkeleton, inputMotion);
    myMotionPlayer = new SMRMotionPlayer( &motion );
    //SMRSkeleton mySkeleton = loadSkeletonFromVSK(inputSkeleton);
    //SMRQuaternion identity;
    //identity.identity();
    //for(int i = 0; i< mySkeleton.getNumJoints(); i++)
    //{
    //  mySkeleton.getJoint(i)->setOrientation(identity);
    //}
    //save the file as bvh

    //exportMotionToBVH("shrug.bvh",motion, mySkeleton);
    //
    //exportPoseToBVH("blah.bvh", mySkeleton);
    //mySkeleton.setMode(RELATIVEMODE);
  }
  else
  {
    cout << "unknown file format" << endl;
    return 0;
  }

  // get GLUT to work
  InitializeGlut(&argc, argv);
  // Init the Smr Library
  Smr::initSmr();
  // Init the shaders capability
  InitShaders();
  // Get my scene prepared
  InitScene();
  // Enter the endless loop
  glutMainLoop();
  // Exit properly
  ShutDown();
  //delete(motion);
  return 0;
}