Rungine рдЧреЗрдо рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛

рд░рдирд░ рдЗрдВрдЬрди (рд╢реЙрд░реНрдЯ рдХреЗ рд▓рд┐рдП Rungine) рдЧреЗрдо рдФрд░ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирдпрд╛ 2D / 3D рдЗрдВрдЬрди рд╣реИред рдЗрд╕рдореЗрдВ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд▓рдЪреАрд▓рд╛ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИрдВред рдЗрдВрдЬрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдХреЛрд░ (рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдЕрдкрдиреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд░реНрдиреЗрд▓), рдЬреАрдпреВрдЖрдИ, рдЧреНрд░рд╛рдлрд┐рдХ 2 рдбреАред рд░рдирд░ рдЗрдВрдЬрди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ DirectX9 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред OpenGL рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЗрд╕реЗ рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 10 рдФрд░ рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 11 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред

рд╕рдорд░реНрдерд┐рдд рдордВрдЪ: рд╡рд┐рдВрдбреЛрдЬ

рдЗрдВрдЬрди рдЕрднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдХрд╛рдо рдкрд░ рдЗрд╕ рдЗрдВрдЬрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА, рддреЛ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреНрд░рд╛рд░рдВрдн:

рдЗрдВрдЬрди dll рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИ:
#include "..\..\RunnerEngine\Runner.h" #pragma comment(lib, "../../Bin/Runner.lib") 


рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ:
 RDevice rdevice; //     Create: if(!rdevice.Create(800, 600, Mode::Windowed, API::Direct3D9)) { return 0; } 


рд╕рдВрдкреВрд░реНрдг рдХрд╛рд░реНрдп рдЪрдХреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
 //,     while(rdevice.EnterMsgLoop(true)) { rdevice.Clear();//   //   if(rdevice.BeginScene()) { //    rdevice.EndScene();//  rdevice.Present();//   } } 

рд╡рд╣ рд╕рдм рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ред рдЕрдм рдЖрдк рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЪрд┐рддреНрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдирдорд╕реНрддреЗ рдзрд╛рд╡рдХ
рд╣реИрд▓реЛ, рд░рдирд░ рд░реБрдбрд╛рдЗрди рдПрд╕рдбреАрдХреЗ рд╕реЗ рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдПрдХ Rungine рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЗрдореЗрдЬ рдХреЛ рдбреНрд░рд╛ рдХрд░рдирд╛ рд╣реИред

рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд рдХреЛрдб:
 // : #include "..\..\RunnerEngine\Runner.h" #pragma comment(lib, "../../Bin/Runner.lib") String MediaDir = "../Media/HelloRunner/"; RDevice rdevice;//      Picture im;//  RFont font; int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE prevInstance, PSTR cmdLine, int showCmd) { RFile f; // : int width = 800; int height = 600; bool mode = Mode::Windowed; int api = API::Direct3D9; //  : if(!FileUtility::FileExists(MediaDir + "../Samples.dat")) //  ,     Visual Studio: MediaDir = "../" + MediaDir; /*   , ,   (/)   API: */ if(f.OpenRead((MediaDir + "../Samples.dat").ToChar())) { f.Read(&width,sizeof(width)); f.Read(&height,sizeof(height)); f.Read(&mode,sizeof(mode)); f.Read(&api,sizeof(api)); f.Close(); } // Runner Engine   //  WidthHeight : if(!rdevice.Create(width, height, mode, api)) { return 0; } //   Tahoma 10  font.Create(&rdevice, Fonts::Tahoma); // im,   RunnerBackground.tga: im.Create(&rdevice, MediaDir + "RunnerBackground.tga"); //  : Window::SetTitle("Runner Engine. Tutorial: Hellow World"); //,     while(rdevice.EnterMsgLoop(true)) { //true  ,       ,   //  rdevice.Clear();//   //   if(rdevice.BeginScene()) { //    im.Draw(0,0,Window::GetWidth(),Window::GetHeight(), Colors::White); // : font.Begin(); font.Draw2DText(10,10,"Press ESC to exit",Colors::White); font.Draw2DText(10,25,String("FPS: ") + rdevice.GetFPS(), Colors::White); font.End(); rdevice.EndScene();//  rdevice.Present();//   } //    ESC: if(Keyboard::GetKey(KEY_ESCAPE)) { Window::Destroy();//   } } return 0; } //     hWnd : Window::GetHWND(); 


рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
рдЫрд╡рд┐

рдЧрд┐рдпрд░реНрд╕:
рдЧрд┐рдпрд░реНрд╕ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджреЛ рдкрд░рд╕реНрдкрд░ рдЧрд┐рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓ рдПрдиреАрдореЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред

 #include "..\..\RunnerEngine\Runner.h" #pragma comment(lib, "../../Bin/Runner.lib") String MediaDir = "../Media/Gears/"; RDevice rdevice;//      // : Picture Gear1;//  Picture Gear2;//  Picture Symbol;//  RFont font; //      : int g1_count = 12; int g2_count = 12; float angle = 0.0f;//     bool Create() { RFile f; // : int width = 800; int height = 600; bool mode = Mode::Windowed; int api = API::Direct3D9; //  : if(!FileUtility::FileExists(MediaDir + "../Samples.dat")) //  ,     Visual Studio: MediaDir = "../" + MediaDir; /*  , ,   (/)   API: */ if(f.OpenRead((MediaDir + "../Samples.dat").ToChar())) { f.Read(&width,sizeof(width)); f.Read(&height,sizeof(height)); f.Read(&mode,sizeof(mode)); f.Read(&api,sizeof(api)); f.Close(); } // Runner Engine   //  WidthHeight : if(!rdevice.Create(width, height, mode, api)) { return false; } rdevice.SetTexFilter(TexFilter::ANISOTROPIC,TexFilter::ANISOTROPIC,16); //   Tahoma 10  font.Create(&rdevice, Fonts::Tahoma); // : Gear1.Create(&rdevice, MediaDir + "Gear1.dds"); Gear2.Create(&rdevice, MediaDir + "Gear2.dds"); Symbol.Create(&rdevice, MediaDir + "Symbol.tga"); return true; } void UpdateFPS() { //  fps(   ): static int old_fps = 0; //   fps: int new_fps = rdevice.GetFPS(); if(old_fps != new_fps) { //  : Window::SetTitle(String("Runner Engine. Tutorial 2: Gears ")+ new_fps +" fps"); old_fps = new_fps; } } void Render() { //,    : while(rdevice.EnterMsgLoop()) { UpdateFPS(); /*        ,    :*/ angle += rdevice.GetElapsedTime()/500.0f; /* ..    ,   g1_count ,    g2_count,       , .. ,      g2_count/g1_count       . ..       :*/ float angle2 = -(g2_count/g1_count)*angle; /*       .        .*/ rdevice.Clear(Colors::System::Background);//   rdevice.SetTexWithAlphaChanel(1);//   //   if(rdevice.BeginScene()) { //    800600,   //       //       //800600: float kx = (float)Window::GetWidth()/800; float ky = (float)Window::GetHeight()/600; int x = 170;//*kx; int y = 70;//*ky; //   : int sx = INT(297.0f*kx); int sy = INT(297.0f*ky); // 297        , //   800x600 // : Gear1.Draw(INT((x - 40)*kx), INT((y + 170)*ky),sx,sy, angle); Gear2.Draw(INT((x + 150)*kx), INT((y - 40)*ky),sx,sy, angle2); //     : Point Size = Symbol.GetSize()*Window::GetWidth()/2300; Symbol.Draw(Window::GetWidth() - Size.x, Window::GetHeight() тАУ Size.y, Size.x, Size.y); // : font.Begin(); font.Draw2DText(10,10,"Press ESC to exit",Colors::White); font.Draw2DText(10,25,String("FPS: ") + rdevice.GetFPS(),Colors::White); font.End(); rdevice.EndScene();//  rdevice.Present();//   } //    ESC: if(Keyboard::GetKey(KEY_ESCAPE)) { Window::Destroy();//   } } } int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE prevInstance, PSTR cmdLine, int showCmd) { if(Create()) { Render(); return 0; } } 


рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
рдЫрд╡рд┐

Source: https://habr.com/ru/post/In127385/


All Articles