Ejemplo n.º 1
0
void AddTag(CIccIO *pIO, CIccProfile *pIcc)
{
  std::string textIn;

  printf("Enter tag signature to be added [ex- cprt] : ");
  textIn = GetUserInput();

	icTagSignature tagSig = (icTagSignature)icGetSigVal(textIn.c_str());

	switch (tagSig) {
		case icSigProfileDescriptionTag:
		case icSigCopyrightTag:
			printf("Enter the text to be saved in the tag : ");
			textIn = GetUserInput();
			if(!AddTextTag(textIn.c_str(), pIcc, tagSig))
				printf("Write operation failed.\n");
			else
				printf("Tag added successfully.\n");  
			break;
		default:
			if(!WriteTag(pIcc, tagSig))
				printf("Write operation failed.\n");
			else
				printf("Tag added successfully.\n");  
	}

}
Ejemplo n.º 2
0
void ReadTag(CIccProfile *pIcc)
{
  CIccInfo Fmt;
  icChar buf[64];

  printf("\nProfile Tags\n");
  printf(  "------------\n");

  printf("%25s    ID    %8s\t%8s\n", "Tag", "Offset", "Size");
  printf("%25s  ------  %8s\t%8s\n", "----", "------", "----");

  TagEntryList::iterator i;

  for (i=pIcc->m_Tags->begin(); i!=pIcc->m_Tags->end(); i++) {
    printf("%25s  %s  %8d\t%8d\n", Fmt.GetTagSigName(i->TagInfo.sig),
                                     icGetSig(buf, i->TagInfo.sig, false), 
                                     i->TagInfo.offset, i->TagInfo.size);
  }

  printf("\nNote: The above Offset & Size parameters DO NOT reflect any unsaved changes to profile.\n");

  printf("\nEnter the tag ID : ");
  std::string TagID;
  TagID = GetUserInput();

  if(!ShowTag(pIcc, (icTagSignature)icGetSigVal(TagID.c_str())))
    printf("Tag (%s) not found in profile\n", TagID.c_str());

}
Ejemplo n.º 3
0
int main(void)
{
    int n = GetUserInput();
    for (int i = 1; i <= n; i++) 
    {
        PrintLine(n - i, i);
    }
}
Ejemplo n.º 4
0
bool ConfirmExit()
{
  std::string Exit;
  printf("\nExit? (y/n): ");
  Exit = GetUserInput();

  return (("Y" == Exit) || ("y" == Exit));  
}
Ejemplo n.º 5
0
int main()
{
	// Get first number from the user
	int nInput1 = GetUserInput();

	// Get mathematical opeartion from user
	char chOperation = GetMathematicalOperation();

	// Get second number from the user
	int nInput2 = GetUserInput();

	// Calculate resault
	int nResult = CalculateResault(nInput1, chOperation, nInput2);

	// Print result
	PrintResult(nResult);

}
Ejemplo n.º 6
0
//主进程
void main(void)
{
	//创建Opengl渲染环境及窗口
	char *device = "opengl";
	HCoreResizeFunc( ResizeWindow );
	HCoreCreateWindow(100, 100, 800, 600, device);

	if ( !HCoreInitGraphicsDevice(device) )
	{
		printf("初始化失败 \n", device);
		exit(0);
	}
	
	//注册输入函数
	HCoreInputInit();

	HCoreRegisterKeyDown(HCoreKEY_0, KeyDown_0);
	HCoreRegisterKeyDown(HCoreKEY_1, KeyDown_1);
	HCoreRegisterKeyDown(HCoreKEY_2, KeyDown_2);
	HCoreRegisterKeyDown(HCoreKEY_3, KeyDown_3);
	HCoreRegisterKeyDown(HCoreKEY_4, KeyDown_4);
	HCoreRegisterKeyDown(HCoreKEY_5, KeyDown_5);
	HCoreRegisterKeyDown(HCoreKEY_6, KeyDown_6);
	HCoreRegisterKeyDown(HCoreKEY_7, KeyDown_7);
	HCoreRegisterKeyDown(HCoreKEY_8, KeyDown_8);
	HCoreRegisterKeyDown(HCoreKEY_9, KeyDown_9);
	
	//设置相机
	g_Control.SetCamera(Vector4(0.0f, 0.0f, 1.0f), Vector4(0.0f, 1.0f, 1.0f), Vector4(0.0f, 0.0f, 1.0f) );

	//读取模型
	//地形
	g_Model.Load_ASCII("..\\models\\terrain.gma");
	//棋盘
	g_SSAOModel.Load_ASCII("..\\models\\chess.gma");

	// 载入shader
	if ( !InitResource() )
	{
		ReleaseResource();
		exit(0);
	}

	// 主循环
	while( HCoreProcessMessage() )
	{
		GetUserInput();
		RenderFrame();
	}

	// 释放shader
	ReleaseResource();

	// 关闭OpenGL绘图设备
	HCoreReleaseGraphicsDevice();
}
Ejemplo n.º 7
0
void DeleteTag(CIccIO *pIO, CIccProfile *pIcc)
{
  std::string tagtype;

  printf("Enter tag signature to be deleted [ex- cprt] : ");
  tagtype = GetUserInput();

  if(!pIcc->DeleteTag((icTagSignature)icGetSigVal(tagtype.c_str())))
    printf("Delete operation failed.\n");
  else
    printf("Tag deleted successfully.\n");  
}
Ejemplo n.º 8
0
void SaveProfile(CIccProfile *pIcc) 
{
  printf("\nSave Profile as [Ex- Filename.icc]: ");

  std::string szFilename;
  szFilename = GetUserInput();

  if(SaveIccProfile(szFilename.c_str(),pIcc))
    printf("\nProfile successfully saved.\n");
  else
    printf("\nError saving Profile.\n");

}
Ejemplo n.º 9
0
int main(int argc, char *argv[]){
	/* argument checking */
	if (argc != 3){
		printf("The query engine required 2 arguments.\n");
		exit(EXIT_FAILURE);
	}
	if ( !IsFile(argv[1]) ){
		printf("%s is not a valid file.", argv[1]);
		exit(EXIT_FAILURE);
	}
	if ( !IsDir(argv[2]) ){
		printf("%s is not a valid directory", argv[2]);
		exit(EXIT_FAILURE);
	}

	/* HashTable to store data from the file provided */
	HashTable *ht = malloc(sizeof(HashTable));
	initializeHashTable(ht);
	printf("Reading in the file...\n");
	ReadFile(argv[1], ht);
	

 	

	signal(SIGINT, intHandler);
	while(running){
		DocumentNode *final = NULL;
		char input[MAX_INPUT + 1]; // character array to hold user input
		printf("Enter your words: ");

		/* make sure everything went well on the user's end */
		int ret = GetUserInput(input);
		if( ret == 0){
			continue;
		}
		else if(ret == 2){
			break;
		}

		/* handle the input */
		final = CreateUnsortedDocList(input, ht);
		SortDocList(&final);	
		ReportInfo(final, argv[2]);
		FreeDocList(final);
		
		
	}
void StartGame() {
  SCORE score;
  ResetScore(&score);
  while (1) {
    p_r_s player_choice;
    p_r_s machine_choice;
    // What the player picks?
    char c = GetUserInput();
    // Do we choose a control key rather than p r s?
    int controlKey = 0;
    switch (c) {
    case 'p':
      player_choice = paper;
      break;
    case 'r':
      player_choice = rock;
      break;
    case 's':
      player_choice = scissors;
      break;
    case 'g':
      PrintScore(&score);
      controlKey = 1;
      break;
    case 'h':
      PrintHelp();
      controlKey = 1;
      break;
    case 'e':
      PrintScore(&score);
      exit(0);
    default:
      PrintHelp();
      controlKey = 1;
      break;
    }
    if (controlKey)
      continue;
    // What the machine picks?
    machine_choice = MachineSelect();
    outcome re = Compare(player_choice, machine_choice); 
    PrintRoundResult(player_choice, machine_choice, re);
    SaveScore(re, &score);
  }
  return;
}
Ejemplo n.º 11
0
int _tmain(int argc, _TCHAR* argv[])
{
	Game game;

	InitGame(game);

	while (!IsGameFinished(game))
	{
		// Get game time
		game.t = timeGetTime();

		GetUserInput(game);
		PerformAI(game);
		DrawGame(game);
	}

	DisplayResults(game);

	TerminateGame(game);

	return 0;
}
Ejemplo n.º 12
0
void main(void)
{
	// 內定使用DirectX 9來繪圖
	char *device = "dx9";
	void (*render)(void) = RenderFrameDX9;
	bool (*init_resource)(void) = InitResourceDX9;
	bool (*release_resource)(void) = ReleaseResourceDX9;
	void (*resize_func)(int width, int height) = ResizeWindowDX9;

#ifdef _ENABLE_DX10_
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n");
#else
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n");
#endif
	int c = getche();

	switch(c)
	{
	default:
	case '1':
		render = RenderFrameDX9;
		init_resource = InitResourceDX9;
		release_resource = ReleaseResourceDX9;
		resize_func = ResizeWindowDX9;
		break;
	case '2':
		device = "opengl";
		init_resource = InitResourceOpenGL;
		release_resource = ReleaseResourceOpenGL;
		render = RenderFrameOpenGL;
		resize_func = ResizeWindowOpenGL;
		break;
	case '3':
#ifdef _ENABLE_DX10_
		device = "dx10";
		init_resource = InitResourceDX10;
		release_resource = ReleaseResourceDX10;
		render = RenderFrameDX10;
		resize_func = ResizeWindowDX10;
#endif
		break;
	}

	GutResizeFunc( resize_func );

	// 在(100,100)的位置開啟一個大小為(512x512)的視窗
	GutCreateWindow(100, 100, 512, 512, device);

	// 做OpenGL或DirectX初始化
	if ( !GutInitGraphicsDevice(device) )
	{
		printf("Failed to initialize %s device\n", device);
		exit(0);
	}

	g_view_matrix.Identity();
	g_world_matrix.Identity();
	g_scale_matrix.Identity();

	GutInputInit();

	//g_Control.SetCamera(Vector4(0.0f, 10.0f, 0.0f), Vector4(0.0f, 0.0f, 0.0f), Vector4(0.0f, 0.0f, 1.0f) );
	g_Control.SetCamera(Vector4(0.0f, 0.0f, 10.0f), Vector4(0.0f, 0.0f, 0.0f), Vector4(0.0f, 1.0f, 0.0f) );

	CGutModel::SetTexturePath("../../textures/");

	g_Models[0].Load_ASCII("../../models/sun_darker.gma");
	g_Models[1].Load_ASCII("../../models/earth.gma");
	g_Models[2].Load_ASCII("../../models/moon.gma");
	g_Models[3].Load_ASCII("../../models/mars.gma");

	// 載入shader & textures
	if ( !init_resource() )
	{
		release_resource();
		printf("Failed to load resources\n");
		exit(0);
	}

	// 主回圈
	while( GutProcessMessage() )
	{
		GetUserInput();
		frame_move();
		render();
	}

	// 卸載shader
	release_resource();

	// 關閉OpenGL/DirectX繪圖裝置
	GutReleaseGraphicsDevice();
}
Ejemplo n.º 13
0
//=========================================================================
//----- (00000148) --------------------------------------------------------
__myevic__ void Main()
{
	InitDevices();

	InitVariables();

	// Enable chip temp sensor sampling by ADC
	if ( ISRX300 )
	{
		SYS->IVSCTL |= SYS_IVSCTL_VTEMPEN_Msk;
	}

	InitHardware();

	myprintf( "\n\nJoyetech APROM\n" );
	myprintf( "CPU @ %dHz(PLL@ %dHz)\n", SystemCoreClock, PllClock );

	SetBatteryModel();

	gFlags.sample_vbat = 1;
	ReadBatteryVoltage();

	gFlags.sample_btemp = 1;
	ReadBoardTemp();

	InitDisplay();
	MainView();
	SplashTimer = 3;

	CustomStartup();

	if ( !PD3 )
	{
		DrawScreen();
		while ( !PD3 )
			;
	}

	while ( 1 )
	{
		while ( gFlags.playing_fb )
		{
			// Flappy Bird game loop
			fbCallTimeouts();
			if ( gFlags.tick_100hz )
			{
				// 100Hz
				gFlags.tick_100hz = 0;
				ResetWatchDog();
				TimedItems();
				SleepIfIdle();
				GetUserInput();
				if ( !PE0 )
					SleepTimer = 3000;
			}
			if ( gFlags.tick_10hz )
			{
				// 10Hz
				gFlags.tick_10hz = 0;
				DataFlashUpdateTick();
			}
		}

		if ( gFlags.firing )
		{
			ReadAtoCurrent();
		}

		if ( gFlags.tick_5khz )
		{
			// 5000Hz
			gFlags.tick_5khz = 0;

			if ( gFlags.firing )
			{
				RegulateBuckBoost();
			}
		}

		if ( gFlags.tick_1khz )
		{
			// 1000Hz
			gFlags.tick_1khz = 0;

			if ( gFlags.firing )
			{
				ReadAtomizer();

				if ( ISMODETC(dfMode) )
				{
					if ( gFlags.check_mode )
					{
						CheckMode();
					}
					TweakTargetVoltsTC();
				}
				else if ( ISMODEVW(dfMode) )
				{
					TweakTargetVoltsVW();
				}
			}

			if ( dfStatus.vcom )
			{
				VCOM_Poll();
			}
		}

		if ( gFlags.tick_100hz )
		{
			// 100Hz
			gFlags.tick_100hz = 0;

			ResetWatchDog();

			if ( gFlags.read_battery )
			{
				gFlags.read_battery = 0;
			}

			TimedItems();
			SleepIfIdle();
			ReadBatteryVoltage();
			ReadBoardTemp();

			if ( gFlags.firing && BoardTemp >= 70 )
			{
				Overtemp();
			}

			if ( ISVTCDUAL )
			{
				BatteryChargeDual();
			}
			else if ( ISCUBOID || ISCUBO200 || ISRX200S || ISRX23 || ISRX300 )
			{
				BatteryCharge();
			}

			if (( gFlags.anim3d ) && ( Screen == 1 ) && ( !EditModeTimer ))
			{
				anim3d( 0 );
			}

			if ( Screen == 60 )
			{
				AnimateScreenSaver();
			}

			if ( gFlags.firing )
			{
				if ( gFlags.read_bir && ( FireDuration > 10 ) )
				{
					ReadInternalResistance();
				}

				if ( PreheatTimer && !--PreheatTimer )
				{
					uint16_t pwr;

					if ( dfMode == 6 )
					{
						pwr = dfSavedCfgPwr[ConfigIndex];
					}
					else
					{
						pwr = dfPower;
					}

					if ( pwr > BatteryMaxPwr )
					{
						gFlags.limit_power = 1;
						PowerScale = 100 * BatteryMaxPwr / pwr;
					}
					else
					{
						gFlags.limit_power = 0;
						PowerScale = 100;
					}
				}
			}

			if ( KeyTicks >= 5 )
			{
				KeyRepeat();
			}

			GetUserInput();
		}

		if ( gFlags.tick_10hz )
		{
			// 10Hz
			gFlags.tick_10hz = 0;

			DataFlashUpdateTick();
			LEDTimerTick();

			if ( gFlags.firing )
			{
				++FireDuration;

				if ( gFlags.monitoring )
				{
					Monitor();
				}
			}

			if ( ShowWeakBatFlag )
				--ShowWeakBatFlag;

			if ( ShowProfNum )
				--ShowProfNum;

			if ( !( gFlags.firing && ISMODETC(dfMode) ) )
			{
				DrawScreen();
			}

			if ( KeyTicks < 5 )
			{
				KeyRepeat();
			}
		}

		if ( gFlags.tick_5hz )
		{
			// 5Hz
			gFlags.tick_5hz = 0;

			if ( !gFlags.rtcinit && NumBatteries )
			{
				InitRTC();
			}

			if ( gFlags.firing )
			{
				if ( TargetVolts == 0 )
				{
					ProbeAtomizer();
				}
			}
			else
			{
				if
				(	!dfStatus.off
					&& Event == 0
					&& ( AtoProbeCount < 12 )
					&& ( Screen == 0 || Screen == 1 || Screen == 5 ) )
				{
					ProbeAtomizer();
				}
			}

			if ( IsClockOnScreen() )
			{
				static uint8_t u8Seconds = 61;
				S_RTC_TIME_DATA_T rtd;

				GetRTC( &rtd );

				if ( (uint8_t)rtd.u32Second != u8Seconds )
				{
					u8Seconds = (uint8_t)rtd.u32Second;
					gFlags.refresh_display = 1;
				}
			}
		}

		if ( gFlags.tick_2hz )
		{
			// 2Hz
			gFlags.tick_2hz = 0;

			gFlags.osc_1hz ^= 1;

			if ( gFlags.firing )
			{
				if ( ISMODETC(dfMode) )
				{
					DrawScreen();
				}
			}
			else
			{
				if
				(	!dfStatus.off
					&& Event == 0
					&& ( AtoProbeCount >= 12 )
					&& ( Screen == 0 || Screen == 1 || Screen == 5 ) )
				{
					ProbeAtomizer();
				}

				if ( gFlags.monitoring )
				{
					Monitor();
				}
			}
		}

		if ( gFlags.tick_1hz )
		{
			// 1Hz
			gFlags.tick_1hz = 0;

			if ( SplashTimer )
			{
				--SplashTimer;
				
				if ( !SplashTimer )
				{
					MainView();
				}
			}

			if ( !gFlags.firing && !dfStatus.off && !EditModeTimer )
			{
				if ( HideLogo )
				{
					if ( Screen == 1 )
					{
						--HideLogo;

						if ( !HideLogo )
						{
							gFlags.refresh_display = 1;
						}
					}
				}
			}
		}

		EventHandler();

	}
}
Ejemplo n.º 14
0
int main(int argc, icChar* argv[])
{
  if (argc<=1) {
    printf("Usage: CmdIccProfLibTest profile\n");
    return -1;
  }

  
  CIccFileIO FileIO;
  if (!FileIO.Open(argv[1], "rb")) {
    printf("Unable to open '%s'\n", argv[1]);
    return -1;
  }

  CIccProfile *pIcc = new CIccProfile;

  if(!pIcc->Read(&FileIO)) {
    printf("Unable to read '%s'\n", argv[1]);
    delete pIcc;
    return -1;
  }

  bool Exit = false;
  std::string Option;

  ShowMenu();

  while(!Exit) {
    Option = GetUserInput();
    if(Option.size() >=2) {
      printf("\nInvalid Option\n");
      return -1;
    }
    
    icChar temp = Option[0];

    switch(temp) {
    case '0':
      ShowMenu();
      break;
    case '1':
      ShowHeader(pIcc);
      ShowMenu();
      break;
    case '2':
      ReadTag(pIcc);
      ShowMenu();
      break;
    case '3':
      AddTag(&FileIO,pIcc);
      ShowMenu();
      break;
    case '4':
      SaveProfile(pIcc);
      return 0;
    case '5':
      IsValidProfile(&FileIO, pIcc);
      ShowMenu();
      break;
    case '6':
      DeleteTag(&FileIO, pIcc);
      ShowMenu();
      break;
    case '7':
      SaveProfCopy(pIcc);
      ShowMenu();
      break;
    case '9':
      Exit = ConfirmExit();
      if(!Exit) ShowMenu();
      break;
    default:
      printf("\nInvalid Option\n");
      ShowMenu();      
    }
  }


  delete pIcc;
  
  return 0;
}
Ejemplo n.º 15
0
void main(void)
{
	// 內定使用DirectX 9來繪圖
	char *device = "dx9";
	void (*render)(void) = RenderFrameDX9;
	bool (*init_resource)(void) = InitResourceDX9;
	bool (*release_resource)(void) = ReleaseResourceDX9;
	void (*resize_func)(int width, int height) = ResizeWindowDX9;

#ifdef _ENABLE_DX10_
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n");
#else
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n");
#endif

	int c = getche();

	switch(c)
	{
	default:
	case '1':
		render = RenderFrameDX9;
		init_resource = InitResourceDX9;
		release_resource = ReleaseResourceDX9;
		resize_func = ResizeWindowDX9;
		break;
	case '2':
		device = "opengl";
		init_resource = InitResourceOpenGL;
		release_resource = ReleaseResourceOpenGL;
		render = RenderFrameOpenGL;
		resize_func = ResizeWindowOpenGL;
		break;
#ifdef _ENABLE_DX10_
	case '3':
		device = "dx10";
		init_resource = InitResourceDX10;
		release_resource = ReleaseResourceDX10;
		render = RenderFrameDX10;
		resize_func = ResizeWindowDX10;
		break;
#endif
	}

	printf("\nSelected %s device for rendering.\n", device);

	GutResizeFunc( resize_func );
	// 在(100,100)的位置開啟一個大小為(512x512)的視窗
	GutCreateWindow(100, 100, 512, 512, device);
	// 做OpenGL或DirectX初始化
	if ( !GutInitGraphicsDevice(device) )
	{
		printf("Failed to initialize %s device\n", device);
		exit(0);
	}
	//
	GutInputInit();

	GutRegisterKeyDown(GUTKEY_1, KeyDown_1);
	GutRegisterKeyDown(GUTKEY_2, KeyDown_2);
	GutRegisterKeyDown(GUTKEY_3, KeyDown_3);
	GutRegisterKeyDown(GUTKEY_4, KeyDown_4);
	GutRegisterKeyDown(GUTKEY_5, KeyDown_5);
	GutRegisterKeyDown(GUTKEY_6, KeyDown_6);

	GutRegisterKeyPressed(GUTKEY_EQUALS, KeyPressed_ADD);
	GutRegisterKeyPressed(GUTKEY_MINUS, KeyPressed_MINUS);
	GutRegisterKeyPressed(GUTKEY_ADD, KeyPressed_ADD);
	GutRegisterKeyPressed(GUTKEY_SUBTRACT, KeyPressed_MINUS);

	g_Control.SetCamera(Vector4(0.0f, 3.0f, 1.0f), Vector4(0.0f, 0.0f, 1.0f), Vector4(0.0f, 0.0f, 1.0f) );
	g_Control.SetMoveSpeed(5.0f);

	//
	g_emitter.m_fEmitRate = 300;
	g_emitter.m_fEmitTheta = FastMath::DegToRad(15.0f);
	g_emitter.m_fParticleInitSpeed[0] = 1.0f;
	g_emitter.m_fParticleInitSpeed[1] = 2.0f;
	g_emitter.m_fParticleLife[0] = 1.5f;
	g_emitter.m_fParticleLife[1] = 2.0f;
	g_emitter.m_fParticleSize[0] = 0.05f;
	g_emitter.m_fParticleSize[1] = 0.10f;

	g_Particle.SetEmitter(g_emitter);
	g_Particle.SetForce(Vector4(0.0f, 0.0f, -1.0f));

	// 載入shader
	if ( !init_resource() )
	{
		release_resource();
		printf("Failed to load resources\n");
		exit(0);
	}

	g_Timer.Restart();
	// 主回圈
	while( GutProcessMessage() )
	{
		GetUserInput();
		//
		framemove();
		// 畫出矩形
		render();
	}
	// 卸載shader
	release_resource();
	// 關閉OpenGL/DirectX繪圖裝置
	GutReleaseGraphicsDevice();
}
Ejemplo n.º 16
0
void main(void)
{
	// 內定使用DirectX 9來繪圖
	char *device = "dx9";
	void (*render)(void) = RenderFrameDX9;
	bool (*init_resource)(void) = InitResourceDX9;
	bool (*release_resource)(void) = ReleaseResourceDX9;
	void (*resize_func)(int width, int height) = ResizeWindowDX9;

#ifndef _ENABLE_DX10_
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n");
#else
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n");
#endif

	int c = getche();

	switch(c)
	{
	default:
	case '1':
		render = RenderFrameDX9;
		init_resource = InitResourceDX9;
		release_resource = ReleaseResourceDX9;
		resize_func = ResizeWindowDX9;
		break;
	case '2':
		device = "opengl";
		init_resource = InitResourceOpenGL;
		release_resource = ReleaseResourceOpenGL;
		render = RenderFrameOpenGL;
		resize_func = ResizeWindowOpenGL;
		break;
	case '3':
#ifdef _ENABLE_DX10_
		device = "dx10";
		init_resource = InitResourceDX10;
		release_resource = ReleaseResourceDX10;
		render = RenderFrameDX10;
		resize_func = ResizeWindowDX10;
#endif
		break;
	}

	GutResizeFunc( resize_func );

	// 在(100,100)的位置開啟一個大小為(512x512)的視窗
	GutCreateWindow(100, 100, 512, 512, device);

	// 做OpenGL或DirectX初始化
	if ( !GutInitGraphicsDevice(device) )
	{
		printf("Failed to initialize %s device\n", device);
		exit(0);
	}

	GutInputInit();
	g_Control.SetCamera(Vector4(5.0f, 0.0f, 5.0f), Vector4(0.0f), Vector4(0.0f, 1.0f, 0.0f) );

	g_Model.Load_ASCII("../../models/teapot_set.gma");
	g_SpotLightModel.Load_ASCII("../../models/spotlight.gma");

	// 載入shader
	if ( !init_resource() )
	{
		release_resource();
		printf("Failed to load resources\n");
		exit(0);
	}

	// 主回圈
	while( GutProcessMessage() )
	{
		GetUserInput();
		render();
	}

	// 卸載shader
	release_resource();

	// 關閉OpenGL/DirectX繪圖裝置
	GutReleaseGraphicsDevice();
}
Ejemplo n.º 17
0
void
Credits ()
{
    InitAnimatedSkyBackground ();

    int TextPosition1 = 1;
    int TextPosition2 = 1;

    int Textline1 = "PSP-OSS";
    int Textline2 = OSSVersion;
    int Textline3 = "WwW.PsP-OsS.com";
    int Textline4 = "Coded by:";
    int Textline5 = "ELZ";
    int Textline6 = "Canti";
    int Textline7 = "Daurnimator";
    int Textline8 = "Mondy";
    int Textline8AndAHalf = "INK";
    int Textline9 = "GFX by:";
    int Textline10 = "System";
    int Textline11 = "Posty";
    int Textline12 = "Enjoy ;)";
    int Textline13 = "Check PSP-OSS[DOT]COM for updates!";
    int Textline14 = "Oh, I almost forgot; F**K YOU SASUKE!";


    while (1)
    {
        AnimateSkyBackground ();
        GetUserInput ();

        PutTextFont (TextPosition2, 262, "PSP-OSS - WwW.PsP-OsS.CoM", DARK_RED);
        PutTextFont (TextPosition2, 0, "PSP-OSS - WwW.PsP-OsS.CoM", DARK_RED);

        PutTextFont (5, TextPosition1, Textline1, BLACK);
        PutTextFont (20, (TextPosition1 + 10), Textline2, RED);
        PutTextFont (40, (TextPosition1 + 20), Textline3, RED);

        PutTextFont (5, (TextPosition1 + 50), Textline4, ORANGE);
        PutTextFont (5, (TextPosition1 + 60), Textline5, CYAN);
        PutTextFont (5, (TextPosition1 + 70), Textline6, CYAN);
        PutTextFont (5, (TextPosition1 + 80), Textline7, CYAN);
        PutTextFont (5, (TextPosition1 + 90), Textline8, CYAN);
        PutTextFont (5, (TextPosition1 + 100), Textline8AndAHalf, CYAN);

        PutTextFont (5, (TextPosition1 + 130), Textline9, ORANGE);
        PutTextFont (5, (TextPosition1 + 140), Textline10, CYAN);
        PutTextFont (5, (TextPosition1 + 150), Textline11, CYAN);

        PutTextFont (5, (TextPosition1 + 190), Textline12, BLUE);

        PutTextFont (5, (TextPosition1 + 230), Textline13, BLACK);

        PutTextFont (5, (TextPosition1 + 250), Textline14, BLACK);

        PauseVbl (5) TextPosition2++;

        if (TextPosition1 == 272)
        {
            TextPosition1 = 0;
        }

        if (TextPosition2 == 480)
        {
            TextPosition2 = 0;
        }

        PrintScreen ();

        if (pad.Buttons & PSP_CTRL_DOWN)
        {
            TextPosition1++;
        }
        if (pad.Buttons & PSP_CTRL_UP)
        {
            TextPosition1--;
        }


        if (pad.Buttons & PSP_CTRL_START)
        {
            break;
        }
    }
}
Ejemplo n.º 18
0
void main(void)
{
	// 內定使用DirectX 9來繪圖
	char *device = "dx9";
	void (*render)(void) = RenderFrameDX9;
	bool (*init_resource)(void) = InitResourceDX9;
	bool (*release_resource)(void) = ReleaseResourceDX9;
	void (*resize_func)(int width, int height) = ResizeWindowDX9;

#ifdef _ENABLE_DX10_
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n");
#else
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n");
#endif

	int c = getche();

	switch(c)
	{
	default:
	case '1':
		render = RenderFrameDX9;
		init_resource = InitResourceDX9;
		release_resource = ReleaseResourceDX9;
		resize_func = ResizeWindowDX9;
		break;
	case '2':
		device = "opengl";
		init_resource = InitResourceOpenGL;
		release_resource = ReleaseResourceOpenGL;
		render = RenderFrameOpenGL;
		resize_func = ResizeWindowOpenGL;
		break;
	case '3':
#ifdef _ENABLE_DX10_
		device = "dx10";
		init_resource = InitResourceDX10;
		release_resource = ReleaseResourceDX10;
		render = RenderFrameDX10;
		resize_func = ResizeWindowDX10;
#endif
		break;
	}

	GutResizeFunc( resize_func );
	// 在(100,100)的位置開啟一個大小為(512x512)的視窗
	GutCreateWindow(100, 100, 512, 512, device);
	// 做OpenGL或DirectX初始化
	if ( !GutInitGraphicsDevice(device) )
	{
		printf("Failed to initialize %s device\n", device);
		exit(0);
	}

	float texel = 1.0f/(float)shadowmap_size;
	int index = 0;

	for ( int y=-PCF_sample_span; y<=PCF_sample_span; y++ )
	{
		for ( int x=-PCF_sample_span; x<=PCF_sample_span; x++ )
		{
			g_vTexOffset[index++].Set(x*texel, y*texel, 0.0f, 0.0f);
		}
	}

	index = 0;
	for ( int y=-1; y<=2; y++ )
	{
		for ( int x=-1; x<=2; x++ )
		{
			g_vTexOffset2[index++].Set(x*texel, y*texel, 0.0f, 0.0f);
		}
	}

	GutInputInit();
	GutRegisterKeyDown(GUTKEY_1, KeyDown_1);
	GutRegisterKeyDown(GUTKEY_2, KeyDown_2);
	GutRegisterKeyPressed(GUTKEY_ADD, KeyPressed_ADD);
	GutRegisterKeyPressed(GUTKEY_SUBTRACT, KeyPressed_MINUS);

	g_Control.SetCamera(Vector4(5.0f, 0.0f, 5.0f), Vector4(0.0f), Vector4(0.0f, 1.0f, 0.0f) );

	g_Model.SetTexturePath("../../textures/");
	if ( !g_Model.Load_ASCII("../../models/altar.gma") )
	{
		exit(0);
	}

	// 載入shader
	if ( !init_resource() )
	{
		release_resource();
		printf("Failed to load resources\n");
		exit(0);
	}
	// 主回圈
	while( GutProcessMessage() )
	{
		GetUserInput();
		render();
	}
	// 卸載shader
	release_resource();
	// 關閉OpenGL/DirectX繪圖裝置
	GutReleaseGraphicsDevice();
}
Ejemplo n.º 19
0
void RunProgram(void)
{
	int running = 1;
	//USER_INPUT[0] = USER_INPUT_0;
	//USER_INPUT[1] = USER_INPUT_1;
	//USER_INPUT[2] = USER_INPUT_2;
	//USER_INPUT[3] = USER_INPUT_3;
	//USER_INPUT[4] = NULL;

	while (running)
	{
		PrintPrompt();
		GetUserInput();
		if (strcmp(USER_INPUT[0], "exit") == 0)
		{
			running = 0;
		}
		else if (strcmp(USER_INPUT[0], "ls") == 0)
		{
			if (strcmp(USER_INPUT[1], ". . . . .") == 0)
			{
				//printf("Requires an argument for path name\n");
				list(GetCurrentDirectoryClusterNum());
			}
			else
			{
				ls(USER_INPUT[1]);
			}
		}
		else if (strcmp(USER_INPUT[0], "cd") == 0)
		{
			if (strcmp(USER_INPUT[1], ". . . . .") == 0)
			{
				printf("Requires an argument for path name\n");
			}
			else if (strcmp(USER_INPUT[1], ".") == 0)
			{
				// do nothing
			}
			else
			{
				//char parsed_dir[USER_INPUT_BUFFER_LENGTH];
				//strcpy(parsed_dir, USER_INPUT[1]);
				//ToFAT32(parsed_dir);
				//printf("!%s!\n", parsed_dir);
				cd(USER_INPUT[1]);
			}
		}
		else if (strcmp(USER_INPUT[0], "size") == 0)
		{
			if (strcmp(USER_INPUT[1], ". . . . .") == 0)
			{
				printf("Requires a file name argument\n");
			}
			else
			{
				size(USER_INPUT[1]);
			}
		}
		else if (strcmp(USER_INPUT[0], "open") == 0)
		{
			if (strcmp(USER_INPUT[1], ". . . . .") == 0 ||
			    strcmp(USER_INPUT[2], ". . . . .") == 0)
			{
				printf("Requires a file name argument followed by a mode argument\n");
			}
			else
			{
				char parsed_dir[USER_INPUT_BUFFER_LENGTH];
				strcpy(parsed_dir, USER_INPUT[1]);
				ToFAT32(parsed_dir);
				open(parsed_dir, USER_INPUT[2]);
			}
		}
		else if (strcmp(USER_INPUT[0], "close") == 0)
		{
			if (strcmp(USER_INPUT[1], ". . . . .") == 0)
			{
				printf("Requires a file name argument\n");
			}
			else
			{
				char parsed_dir[USER_INPUT_BUFFER_LENGTH];
				strcpy(parsed_dir, USER_INPUT[1]);
				ToFAT32(parsed_dir);
				close(parsed_dir);
			}
		}
		else if (strcmp(USER_INPUT[0], "read") == 0)
		{
			if (strcmp(USER_INPUT[1],". . . . .") == 0 ||
			    strcmp(USER_INPUT[2],". . . . .") == 0 ||
			    strcmp(USER_INPUT[3],". . . . .") == 0)
			{
				printf("Requires arguments for filename, position, and size\n");
			}
			else
			{
				char parsed_dir[USER_INPUT_BUFFER_LENGTH];
				strcpy(parsed_dir, USER_INPUT[1]);
				ToFAT32(parsed_dir);
				read(parsed_dir, atoi(USER_INPUT[2]), atoi(USER_INPUT[3]));
			}
		}
		else if (strcmp(USER_INPUT[0], "create") == 0)
		{
			if (strcmp(USER_INPUT[1],". . . . .") == 0)
			{
				printf("Requires an argument for the file name\n");
			}
			else if (strcmp(USER_INPUT[1],".") == 0)
			{
				printf("Invalid file name\n");
			}
			else if (strcmp(USER_INPUT[1],"..") == 0)
			{
				printf("Invalid file name\n");
			}
			else
			{
				char parsed_dir[USER_INPUT_BUFFER_LENGTH];
				strcpy(parsed_dir, USER_INPUT[1]);
				ToFAT32(parsed_dir);
				create(parsed_dir);
			}
		}
		else if (strcmp(USER_INPUT[0], "mkdir") == 0)
		{
			if (strcmp(USER_INPUT[1],". . . . .") == 0)
			{
				printf("Requires an argument for the directory name\n");
			}
			else if (strcmp(USER_INPUT[1],".") == 0)
			{
				printf("Invalid directory name\n");
			}
			else if (strcmp(USER_INPUT[1],"..") == 0)
			{
				printf("Invalid directory name\n");
			}	
			else
			{
				char parsed_dir[USER_INPUT_BUFFER_LENGTH];
				strcpy(parsed_dir, USER_INPUT[1]);
				ToFAT32(parsed_dir);
				mkdir(parsed_dir);
			}
		}
		else if (strcmp(USER_INPUT[0], "rm") == 0)
		{
			if (strcmp(USER_INPUT[1],". . . . .") == 0)
			{
				printf("Requires an argument for the file name\n");
			}
			else if (strcmp(USER_INPUT[1],".") == 0)
			{
				printf("Invalid file name\n");
			}
			else if (strcmp(USER_INPUT[1],"..") == 0)
			{
				printf("Invalid file name\n");
			}	
			else
			{
				char parsed_dir[USER_INPUT_BUFFER_LENGTH];
				strcpy(parsed_dir, USER_INPUT[1]);
				ToFAT32(parsed_dir);
				rm(parsed_dir);
			}
		}
		else if (strcmp(USER_INPUT[0], "rmdir") == 0)
		{
			if (strcmp(USER_INPUT[1],". . . . .") == 0)
			{
				printf("Requires an argument for the directory name\n");
			}
			else if (strcmp(USER_INPUT[1],".") == 0)
			{
				printf("Invalid directory name\n");
			}
			else if (strcmp(USER_INPUT[1],"..") == 0)
			{
				printf("Invalid directory name\n");
			}
			else
			{
				char parsed_dir[USER_INPUT_BUFFER_LENGTH];
				strcpy(parsed_dir, USER_INPUT[1]);
				ToFAT32(parsed_dir);
				rmdir(parsed_dir);
			}
		}
		else if (strcmp(USER_INPUT[0], "write") == 0)
		{
			if (strcmp(USER_INPUT[1],". . . . .") == 0 ||
			    strcmp(USER_INPUT[2],". . . . .") == 0 ||
			    strcmp(USER_INPUT[3],". . . . .") == 0 ||
			    strcmp(USER_INPUT[4],". . . . .") == 0)
			{
				printf("Requires arguments for file name, position, number of bytes, and string to write\n"); 
			}
			else
			{
				char parsed_dir[USER_INPUT_BUFFER_LENGTH];
				strcpy(parsed_dir, USER_INPUT[1]);
				ToFAT32(parsed_dir);
				write(parsed_dir, atoi(USER_INPUT[2]), atoi(USER_INPUT[3]), USER_INPUT[4]);
			}
		}
		else if (strcmp(USER_INPUT[0], "debug") == 0)
		{
			printf("CURRENT_CLUSTER: %d\n", GetCurrentDirectoryClusterNum());
			printf("CURRENT_CLUSTER BYTE_ADDRESS: 0x%x\n", FindFirstSectorOfCluster(GetCurrentDirectoryClusterNum()));
			FTPrint();
			PrintDirectoryVector(GetDirectoryContents(GetCurrentDirectoryClusterNum()));
		}
	}
	int k;
	for (k = 0; k < 5; k++)
	{
		free(USER_INPUT[k]);
	}
}
Ejemplo n.º 20
0
int
Keyboard (char *Keyboard_Output_Temp)
{

  Keyboard_CurrentKey = 1;
  Keyboard_Characters = 0;
  Keyboard_CharsetLowercase ();
  PauseVbl (30);		//Pause for half a second

  while (1)
    {
      GetUserInput ();

      PutGFX (0, 0, 480, 270, wallpaper, 0, 0);	//Wallpaper
      PutGFX (0, 0, 480, 15, Keyboard_Output, 0, 242);
      PutTextFont (5, 245, Keyboard_Output_Temp, KeyboardC);

      Keyboard_ButtonTemp = 1;

      while (Keyboard_ButtonTemp < 33)
	{
	  if (Keyboard_CurrentKey == Keyboard_ButtonTemp)
	    {
	      PutGFX (0, 0, 15, 15, Keyboard_Button2,(15 * (Keyboard_ButtonTemp - 1)), 257);
	    }
	  else
	    {
	      PutGFX (0, 0, 15, 15, Keyboard_Button1,(15 * (Keyboard_ButtonTemp - 1)), 257);
	    }

	  char buffer[10];
	  sprintf (buffer, "%c",Keyboard_Characters[(Keyboard_ButtonTemp - 1)]);
	  PutTextFont ((15 * (Keyboard_ButtonTemp - 1) + 3), 260, buffer,Keyboard2C);

	  Keyboard_ButtonTemp += 1;
	}

      if (pad.Buttons != old_buttons)
	{
	  old_buttons = pad.Buttons;

	  if (pad.Buttons & PSP_CTRL_CONFIRM&& strlen (Keyboard_Output_Temp) < 50)
	    {
	    	int size;
	    	size = strlen (Keyboard_Output_Temp);
	      Keyboard_Output_Temp[size] =	Keyboard_Characters[(Keyboard_CurrentKey - 1)];
	      Keyboard_Output_Temp[size+1] = '\0';	      
	    }

	  //Space
	  if (pad.Buttons & PSP_CTRL_TRIANGLE
	      && strlen (Keyboard_Output_Temp) < 50)
	    {
	      Keyboard_Output_Temp[strlen (Keyboard_Output_Temp)] = ' ';
	    }

	  //Delete
	  if (pad.Buttons & PSP_CTRL_SQUARE)
	    {
	      Keyboard_Output_Temp[strlen (Keyboard_Output_Temp) - 1] = 0;
	    }


	  //Move right
	  if (pad.Buttons & PSP_CTRL_RIGHT)
	    {

	      Keyboard_CurrentKey += 1;

	      if (Keyboard_CurrentKey == 34)
		{
		  Keyboard_CurrentKey = 1;
		}
	    }

	  //Move left
	  if (pad.Buttons & PSP_CTRL_LEFT)
	    {

	      Keyboard_CurrentKey -= 1;

	      if (Keyboard_CurrentKey == 0)
		{
		  Keyboard_CurrentKey = 33;
		}
	    }

	  //Done
	  if (pad.Buttons & PSP_CTRL_START)
	    {
	      return Keyboard_Output_Temp;
	    }


	  //Change charset
	  if (pad.Buttons & PSP_CTRL_SELECT)
	    {
	      if (Keyboard_Charset == "Lowercase")
		{
		  Keyboard_CharsetUppercase ();
		}
	      else if (Keyboard_Charset == "Uppercase")
		{
		  Keyboard_CharsetOther ();
		}
	      else if (Keyboard_Charset == "Other")
		{
		  Keyboard_CharsetLowercase ();
		}
	    }
	}
      //Fast right
      if (pad.Buttons & PSP_CTRL_RTRIGGER)
	{

	  Keyboard_CurrentKey += 1;

	  if (Keyboard_CurrentKey == 34)
	    {
	      Keyboard_CurrentKey = 1;
	    }
	}

      //Fast left
      if (pad.Buttons & PSP_CTRL_LTRIGGER)
	{

	  Keyboard_CurrentKey -= 1;

	  if (Keyboard_CurrentKey == 0)
	    {
	      Keyboard_CurrentKey = 33;
	    }
	}


      PutGFX (0, 0, 32, 32, cursor, cursorPosition.x, cursorPosition.y);
      PrintScreen ();
    }
}
Ejemplo n.º 21
0
void InputManager::Run()
{
	char input = GetUserInput();
	_myWorld->Run(input);
}
Ejemplo n.º 22
0
void main(void)
{
	// 內定使用DirectX 9來繪圖
	char *device = "dx9";
	void (*render)(void) = RenderFrameDX9;
	bool (*init_resource)(void) = InitResourceDX9;
	bool (*release_resource)(void) = ReleaseResourceDX9;
	void (*resize_func)(int width, int height) = ResizeWindowDX9;

	/*
	#ifdef _ENABLE_DX10_
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n");
	#else
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n");
	#endif
	*/

	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n");

	int c = getche();

	switch(c)
	{
	default:
	case '1':
		render = RenderFrameDX9;
		init_resource = InitResourceDX9;
		release_resource = ReleaseResourceDX9;
		resize_func = ResizeWindowDX9;
		break;
	case '2':
		device = "opengl";
		init_resource = InitResourceOpenGL;
		release_resource = ReleaseResourceOpenGL;
		render = RenderFrameOpenGL;
		resize_func = ResizeWindowOpenGL;
		break;
		/*
		#ifdef _ENABLE_DX10_
		case '3':
		device = "dx10";
		init_resource = InitResourceDX10;
		release_resource = ReleaseResourceDX10;
		render = RenderFrameDX10;
		resize_func = ResizeWindowDX10;
		break;
		#endif
		*/
	}

	printf("\nSelected %s device for rendering.\n", device);

	GutResizeFunc( resize_func );

	// 在(100,100)的位置開啟一個大小為(512x512)的視窗
	GutCreateWindow(100, 100, 512, 512, device);
	// 做OpenGL或DirectX初始化
	if ( !GutInitGraphicsDevice(device) )
	{
		printf("Failed to initialize %s device\n", device);
		exit(0);
	}
	//
	GutInputInit();
	GutRegisterKeyDown(GUTKEY_1, KeyDown_1);

	g_Control.SetCamera(Vector4(0.0f, 0.0f, 5.0f), Vector4(0.0f, 1.0f, 5.0f), Vector4(0.0f, 0.0f, 1.0f) );
	g_Control.SetMoveSpeed(20.0f);

	// 設定方向光
	g_Lights[0].m_Direction.Set(0.0f, 1.0f, 1.0f, 0.0f);
	g_Lights[0].m_Direction.Normalize();
	g_Lights[0].m_Diffuse.Set(0.6f, 0.6f, 0.6f, 1.0f);
	g_Lights[0].m_Specular.Set(1.0f, 1.0f, 1.0f, 1.0f);

	// 載入shader
	if ( !init_resource() )
	{
		release_resource();
		printf("Failed to load resources\n");
		exit(0);
	}
	// 主回圈
	while( GutProcessMessage() )
	{
		GetUserInput();
		// 畫出矩形
		render();
	}
	// 卸載shader
	release_resource();
	// 關閉OpenGL/DirectX繪圖裝置
	GutReleaseGraphicsDevice();
}
Ejemplo n.º 23
0
void main(void)
{
	// 內定使用DirectX 9來繪圖
	char *device = "dx9";
	void (*render)(void) = RenderFrameDX9;
	bool (*init_resource)(void) = InitResourceDX9;
	bool (*release_resource)(void) = ReleaseResourceDX9;
	void (*resize_func)(int width, int height) = ResizeWindowDX9;

	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n");
	int c = getche();

	switch(c)
	{
	default:
	case '1':
		render = RenderFrameDX9;
		init_resource = InitResourceDX9;
		release_resource = ReleaseResourceDX9;
		resize_func = ResizeWindowDX9;
		break;
	case '2':
		device = "opengl";
		init_resource = InitResourceOpenGL;
		release_resource = ReleaseResourceOpenGL;
		render = RenderFrameOpenGL;
		resize_func = ResizeWindowOpenGL;
		break;
	}

	GutResizeFunc( resize_func );

	// 在(100,100)的位置開啟一個大小為(512x512)的視窗
	GutCreateWindow(100, 100, 512, 512, device);

	// 做OpenGL或DirectX初始化
	if ( !GutInitGraphicsDevice(device) )
	{
		printf("Failed to initialize %s device\n", device);
		exit(0);
	}

	// 設定方向光
	g_Light.m_Position.Set(-3.0f, 0.0f, 5.0f);
	g_Light.m_Direction.Set(0.0f, 1.0f, 1.0f, 0.0f);
	g_Light.m_Direction.Normalize();
	g_Light.m_Diffuse.Set(0.6f, 0.6f, 0.6f, 1.0f);
	//g_Light.m_Specular.Set(1.0f, 1.0f, 1.0f, 1.0f);
	g_Light.m_Specular.Set(0.0f, 0.0f, 0.0f, 1.0f);

	g_light_pos_x = g_Light.m_Position[0];

	GutInputInit();
	g_Control.SetCamera(Vector4(0.0f, 0.0f, 10.0f), Vector4(0.0f, 0.0f, 0.0f), Vector4(0.0f, 1.0f, 0.0f) );

	g_Model.Load_ASCII("..\\..\\models\\teapot.gma");

	// 載入shader
	if ( !init_resource() )
	{
		release_resource();
		printf("Failed to load resources\n");
		exit(0);
	}

	// 主回圈
	while( GutProcessMessage() )
	{
		GetUserInput();
		FrameMove();
		render();
	}

	// 卸載shader
	release_resource();

	// 關閉OpenGL/DirectX繪圖裝置
	GutReleaseGraphicsDevice();
}
Ejemplo n.º 24
0
void main(void)
{
	// 內定使用DirectX 9來繪圖
	char *device = "dx9";
	void (*render)(void) = RenderFrameDX9;
	bool (*init_resource)(void) = InitResourceDX9;
	bool (*release_resource)(void) = ReleaseResourceDX9;
	void (*resize_func)(int width, int height) = ResizeWindowDX9;

#ifdef _ENABLE_DX10_
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n");
#else
	printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n");
#endif

	int c = getche();

	switch(c)
	{
	default:
	case '1':
		render = RenderFrameDX9;
		init_resource = InitResourceDX9;
		release_resource = ReleaseResourceDX9;
		resize_func = ResizeWindowDX9;
		break;
	case '2':
		device = "opengl";
		init_resource = InitResourceOpenGL;
		release_resource = ReleaseResourceOpenGL;
		render = RenderFrameOpenGL;
		resize_func = ResizeWindowOpenGL;
		break;
#ifdef _ENABLE_DX10_
	case '3':
		device = "dx10";
		init_resource = InitResourceDX10;
		release_resource = ReleaseResourceDX10;
		render = RenderFrameDX10;
		resize_func = ResizeWindowDX10;
		break;
#endif
	}

	printf("\nSelected %s device for rendering.\n", device);

	GutResizeFunc( resize_func );

	// 在(100,100)的位置開啟一個大小為(512x512)的視窗
	GutCreateWindow(100, 100, 512, 512, device);

	// 做OpenGL或DirectX初始化
	if ( !GutInitGraphicsDevice(device) )
	{
		printf("Failed to initialize %s device\n", device);
		exit(0);
	}

	g_view_matrix.Identity();
	g_world_matrix.Identity();

	GutInputInit();

	// 載入shader
	if ( !init_resource() )
	{
		release_resource();
		printf("Failed to load resources\n");
		exit(0);
	}

	// 主回圈
	while( GutProcessMessage() )
	{
		GetUserInput();
		// 畫出矩形
		render();
	}
	// 卸載shader
	release_resource();
	// 關閉OpenGL/DirectX繪圖裝置
	GutReleaseGraphicsDevice();
}
Ejemplo n.º 25
0
void main(void)
{
    // 內定使用DirectX 9來繪圖
    char *device = "dx9";
    void (*render)(void) = RenderFrameDX9;
    bool (*init_resource)(void) = InitResourceDX9;
    bool (*release_resource)(void) = ReleaseResourceDX9;
    void (*resize_func)(int width, int height) = ResizeWindowDX9;

#ifdef _ENABLE_DX10_
    printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n");
#else
    printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n");
#endif
    int c = getche();

    switch(c)
    {
    default:
    case '1':
        render = RenderFrameDX9;
        init_resource = InitResourceDX9;
        release_resource = ReleaseResourceDX9;
        resize_func = ResizeWindowDX9;
        break;
    case '2':
        device = "opengl";
        init_resource = InitResourceOpenGL;
        release_resource = ReleaseResourceOpenGL;
        render = RenderFrameOpenGL;
        resize_func = ResizeWindowOpenGL;
        break;
    case '3':
#ifdef _ENABLE_DX10_
        device = "dx10";
        init_resource = InitResourceDX10;
        release_resource = ReleaseResourceDX10;
        render = RenderFrameDX10;
        resize_func = ResizeWindowDX10;
#endif
        break;
    }

    GutResizeFunc( resize_func );
    GutCreateWindow(100, 100, 512, 512, device);

    if ( !GutInitGraphicsDevice(device) )
    {
        printf("Failed to initialize %s device\n", device);
        exit(0);
    }

    // ambient
    g_Lights[0].m_vPosition.Set(0.0f, 0.0f, 0.0f, 1.0f);
    g_Lights[0].m_vDiffuse.Set(0.0f);
    g_Lights[0].m_vAmbient.Set(0.3f);

    GutInputInit();

    GutRegisterKeyDown(GUTKEY_1, KeyDown_1);
    GutRegisterKeyDown(GUTKEY_2, KeyDown_2);
    GutRegisterKeyDown(GUTKEY_3, KeyDown_3);
    GutRegisterKeyDown(GUTKEY_SPACE, KeyDown_Space);

    g_Control.SetCamera(
        Vector4(0.0f, 3.0f, 0.0f),
        Vector4(0.0f, 0.0f, 0.0f),
        Vector4(0.0f, 0.0f, 1.0f) );

    g_Model.Load_ASCII("..\\..\\models\\earth_normalmapped.gma");
    g_Sphere.Load_ASCII("..\\..\\models\\sphere_simple.gma");

    // 載入shader
    if ( !init_resource() )
    {
        release_resource();
        printf("Failed to load resources\n");
        exit(0);
    }
    // 主回圈
    while( GutProcessMessage() )
    {
        GetUserInput();
        frame_move();
        render();
    }
    // 卸載shader
    release_resource();
    // 關閉OpenGL/DirectX繪圖裝置
    GutReleaseGraphicsDevice();
}