Ejemplo n.º 1
0
CrtInt CrtRender::LoadCgProgram( CrtChar * fileName, const CrtInt programType )
{
	CrtChar fullFileName[CRT_MAX_NAME_SIZE]; 
	
	sprintf(fullFileName, "%s%s", ShaderFilePrefix, fileName ); 
	//CrtCpy( fullFileName, fileName ); 

	CrtPrint("CrtRender::LoadCgProgram: Loading %s Shader From File \n", fileName ); 

	// Load And Compile The Vertex Shader From File
	if ( programType == CrtFragmentProgram )
		cgPrograms[NumCgPrograms] = cgCreateProgramFromFile(cgContext, CG_SOURCE, fullFileName, cgFragmentProfile, "main", 0);
	else
		cgPrograms[NumCgPrograms] = cgCreateProgramFromFile(cgContext, CG_SOURCE, fullFileName, cgVertexProfile, "main", 0);

	// Validate Success
	if (cgPrograms[NumCgPrograms] == NULL)
	{
		// Check for a Cg Error, If So switch to FixedFunction
		if ( ! CrtCheckForCgError() )
			return -1;

		// failed to load CgShader 
		CrtChar buff[100];
		sprintf(buff,"CrtRender::LoadCgProgram: Failed Compile CgFile %s \n", fileName ); 
		MessageBox(NULL, buff, "Cg Compile Error", MB_OK );   
		return -1;													
	}

	cgGLLoadProgram(cgPrograms[NumCgPrograms]);	
	NumCgPrograms ++;

	return NumCgPrograms - 1; 
}
Ejemplo n.º 2
0
CrtInt CrtRender::LoadCgProgram( CrtChar * fileName, const CrtInt programType )
{
	CrtChar fullFileName[CRT_MAX_NAME_SIZE]; 
	
	CrtCpy( fullFileName, ShaderFilePrefix );
	CrtCat( fullFileName, fileName ); 

	CrtPrint(" Loading %s Shader From Binary \n", fullFileName ); 

	// get the name extention 
	CrtChar * ext = CrtGetExtention( fullFileName );                 
	
	if ( !CrtCmpIn( ext, ".cg" ) && !CrtCmpIn( ext, ".CG" ) )
	{
		CrtPrint("CrtRender::LoadCgProgram: Invalid File Name %s \n", fullFileName ); 
		return -1; 
	}
	// Load And Compile The Vertex Shader From File
	if ( programType == CrtFragmentProgram )
	{	
		CrtCpy( ext, ".cg" ); 
		cgPrograms[NumCgPrograms] = cgCreateProgramFromFile(cgContext, CG_SOURCE, fullFileName, cgFragmentProfile, NULL, NULL);
	}
	else
	{
		CrtCpy( ext, ".cg" ); 
		cgPrograms[NumCgPrograms] = cgCreateProgramFromFile(cgContext, CG_SOURCE, fullFileName, cgVertexProfile, "main", 0);
	}

	// Validate Success
	if (cgPrograms[NumCgPrograms] == NULL)
	{
		// Check for a Cg Error, If So switch to FixedFunction
		if ( ! CrtCheckForCgError() )
			return -1;

		// failed to load CgShader 
		CrtChar buff[CRT_MAX_NAME_SIZE];
		sprintf(buff," Shader Load Failed %s \n", fileName ); 
		return -1;													
	}
	
	CrtPrint(" Shader ID %d \n", cgPrograms[NumCgPrograms] ); 

	cgGLLoadProgram(cgPrograms[NumCgPrograms]);	
	NumCgPrograms ++;

	return NumCgPrograms - 1; 
}
Ejemplo n.º 3
0
CrtBool CrtInitCg()
{
	// Create a context for the CG programs we are going to load and validate it was successful
	CrtPrint("Creating CG context\n");
	cgContext = cgCreateContext();
	if (cgContext == NULL)
	{
		// BLahhh exit here 
		MessageBox(NULL, "Failed To Create Cg Context", "Error", MB_OK);
		return CrtFalse;													
	}

//	cgSetAutoCompile(cgContext, CG_COMPILE_MANUAL);

	// Register GL states (ugly crashes if you don't do this)
	cgGLRegisterStates(cgContext);

	// Get The Latest GL Vertex Profile
	cgVertexProfile = cgGLGetLatestProfile(CG_GL_VERTEX);				
	cgFragmentProfile = cgGLGetLatestProfile(CG_GL_FRAGMENT);
    
	// Validate Our Profile Determination Was Successful
	if (cgVertexProfile == CG_PROFILE_UNKNOWN || cgFragmentProfile == CG_PROFILE_UNKNOWN)
	{
		MessageBox(NULL, "Invalid profile type", "Error", MB_OK);
		return CrtFalse;			
	}

	// Set The Current Profile
	cgGLSetOptimalOptions(cgVertexProfile);
	cgGLSetOptimalOptions(cgFragmentProfile);

	// Check for errors
	if(!CrtCheckForCgError())
		return CrtFalse;

	return CrtTrue; 
}
Ejemplo n.º 4
0
CrtBool CrtInitCg()
{
	CrtPrint("creating CG context\n");
	cgContext = cgCreateContext();
	if(cgContext == NULL)
	{
		printf("Failed to create CG context\n");
		return CrtFalse;
	}

	// Register GL states
	cgGLRegisterStates(cgContext);
	
	// Get the latest GL Vertex Profile
	cgVertexProfile   = cgGLGetLatestProfile(CG_GL_VERTEX);    // Was hardcoded to CG_PROFILE_SCE_VP_TYPEB
	cgFragmentProfile = cgGLGetLatestProfile(CG_GL_FRAGMENT);  // Was hardcoded to CG_PROFILE_SCE_FP_TYPEB

	// Make sure the profiles came back valid
	if(cgVertexProfile == CG_PROFILE_UNKNOWN || cgFragmentProfile == CG_PROFILE_UNKNOWN)
	{
		CrtPrint("Invalid profile type returned from cgGLGetLatestProfile\n");
		return CrtFalse;
	}
	
	// Set Optimal Options for this profile 
	cgGLSetOptimalOptions(cgVertexProfile);
	cgGLSetOptimalOptions(cgFragmentProfile);
	
	// Check for Cg errors
	if ( !CrtCheckForCgError() )
		return CrtFalse;

	CrtPrint("CG context created\n");

	return CrtTrue; 
}