User interface Szécsi László
Egg projectben DXUTgui.cpp – CDXUTDialogResourceManager::CDXUTDialogReso urceManager() m_SpriteBufferBytes11 = 0; ezt kihagyták, enélkül szétfagy
Sas/SasApp.h, Sas/SasApp.cpp Egg::Sas::SasApp : public Egg::App – effectből kimazsolázza a beállítandókat effectben ennek jelölése annotációkkal – kirakja és kezeli a DXUT-s GUI elemeket Ha Egg::Sas::SasApp-ból származtatunk később – Egg::App helyett – automatikus GUI!
CDXUTDialog hud; CDXUTDialog ui; CDXUTDialogResourceManager dialogResourceManager; static void CALLBACK onGuiEvent( UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserContext ); void Egg::Sas::SasApp::processGuiEvent( UINT nEvent, int nControlID, CDXUTControl* pControl);
namespace Sas { namespace Control { class Base { public: virtual ~Base(void); virtual void apply()=0; }; }
copy-paste-rename gg008-EnvMap folder vcxproj, filters átnevezés solution/add existing project rename project working dir: $(SolutionDir) Project Properties/Configuration Properties/Debugging/Command Arguments --solutionPath:"$(SolutionDir)" --projectPath:"$(ProjectDir)" build, run
#include "App/App.h" #include "Sas/SasApp.h" class Game : public Egg::App Egg::Sas::SasApp
Game::Game(ID3D11Device* device): Egg::Sas::SasApp(device) { }
// createResources loadEffect(); Egg::Sas::SasApp::createResources() ;
// releaseResources return Egg::App::releaseResources(); return Egg::Sas::SasApp::releaseResources ();
// render Egg::Sas::SasApp::render(context);
// animate Egg::Sas::SasApp::animate(dt, t);
// processMessage if(DxaSas::processMessage(hWnd, uMsg, wParam, lParam)) return true;
HRESULT CALLBACK OnD3D11ResizedSwapChain( ID3D11Device* pd3dDevice, IDXGISwapChain* pSwapChain, const DXGI_SURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext ) { app->setSwapChain(pSwapChain, pBackBufferSurfaceDesc); app->createSwapChainResources(); return S_OK; }
void CALLBACK OnD3D11ReleasingSwapChain( void* pUserContext ) { app->releaseSwapChainResources(); }
SolutionDir/Media-ba ui.zip kibontása
#include float scalarTestVariable < string SasUiControl = "Slider"; string SasUiLabel = "scalar test variable"; float SasUiMin = 0.0; float SasUiMax = 1; int SasUiSteps = 100; > = 0.5; bool boolTestVariable < string SasUiControl = "CheckBox"; string SasUiLabel = "boolean test variable"; > = true; float scalarTestVariable2 < string SasUiControl = "Slider"; string SasUiLabel = "scalar test variable II"; float SasUiMin = 0.0; float SasUiMax = 1; int SasUiSteps = 100; > = 0.5; #9.0
L"UI\\Font.dds" L"UI\\outlinedFont.png"
ProjectDir/fx/main.fx-be dolgozzunk csak! új technique ‘guiTest’ – ugyanaz mint az envmapped technique – de más pixel shadereket használ psBackgroundGui, psEnvmappedGui – két slider a textúra és a tükröződés súlyának beállításához – psBackgroundGui – checkbox hogy a háttér cube map alapján legyen, vagy sima szürke – psEnvmappedGui Game.cpp-ben technique nevét cserélni