Using CEGUI in a directx hook but its not rendering anything

For help with anything that CEGUI doesn't offer straight out-of-the-box, e.g.:
- Implementation of new features, such as new Core classes, widgets, WindowRenderers, etc. ...
- Modification of any existing features for specific purposes
- Integration of CEGUI in new engines or frameworks and writing of new plugins (Renderer, Parser, ...) or modules

Moderators: CEGUI MVP, CEGUI Team

valleyman86
Just popping in
Just popping in
Posts: 2
Joined: Tue Apr 13, 2010 23:49

Using CEGUI in a directx hook but its not rendering anything

Postby valleyman86 » Wed Apr 14, 2010 00:06

I am trying to use CEGUI for a directx 9 hook that I created. I basically inject my code into another application. I would like to use this to create a chat screen kind of situation but unfortunately I can't get it to work quite yet. I am able to compile and get CEGUI and everything setup properly so that it builds and I can create a basic window with "Hello World" (testing) that will load. The problem is that I can't get anything to render or show up.

The interesting thing is that I can use pIDirect3DDevice9 and do all sorts of directx drawing on my own with no issues. I assume I could pass this to CEGUI and let it draw as well. The only thing I can think of is that I am missing some other rendering code.

One thing to keep in mind is that the game already creates all the DX init code as well as draw its own stuff. I then hook into endscene() or even present() and do my own drawing which is where CEGUI is coming in.

I am getting no runtime errors or crashes.


Note: I tried using MyGUI as well and had the same problem. Neither will render but both seem to compile and run fine.

My init code looks like:

Code: Select all

                CEGUI::Direct3D9Renderer& myRenderer = CEGUI::Direct3D9Renderer::create( pIDirect3DDevice9 );
      CEGUI::System::create(myRenderer);

      // load scheme and set up defaults
      // initialise the required dirs for the DefaultResourceProvider
      CEGUI::DefaultResourceProvider* rp =
         static_cast<CEGUI::DefaultResourceProvider*>
         (CEGUI::System::getSingleton().getResourceProvider());

      const char* dataPathPrefix = "./datafiles";
      char resourcePath[260];

      // for each resource type, set a resource group directory
      sprintf(resourcePath, "%s/%s", dataPathPrefix, "schemes/");
      rp->setResourceGroupDirectory("schemes", resourcePath);
      sprintf(resourcePath, "%s/%s", dataPathPrefix, "imagesets/");
      rp->setResourceGroupDirectory("imagesets", resourcePath);
      sprintf(resourcePath, "%s/%s", dataPathPrefix, "fonts/");
      rp->setResourceGroupDirectory("fonts", resourcePath);
      sprintf(resourcePath, "%s/%s", dataPathPrefix, "layouts/");
      rp->setResourceGroupDirectory("layouts", resourcePath);
      sprintf(resourcePath, "%s/%s", dataPathPrefix, "looknfeel/");
      rp->setResourceGroupDirectory("looknfeels", resourcePath);
      sprintf(resourcePath, "%s/%s", dataPathPrefix, "lua_scripts/");
      rp->setResourceGroupDirectory("lua_scripts", resourcePath);
      sprintf(resourcePath, "%s/%s", dataPathPrefix, "xml_schemas/");
      rp->setResourceGroupDirectory("schemas", resourcePath);   
      

      // set the default resource groups to be used
      CEGUI::Imageset::setDefaultResourceGroup("imagesets");
      CEGUI::Font::setDefaultResourceGroup("fonts");
      CEGUI::Scheme::setDefaultResourceGroup("schemes");
      CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeels");
      CEGUI::WindowManager::setDefaultResourceGroup("layouts");
      CEGUI::ScriptModule::setDefaultResourceGroup("lua_scripts");

      // setup default group for validation schemas
      CEGUI::XMLParser* parser = CEGUI::System::getSingleton().getXMLParser();
      if (parser->isPropertyPresent("SchemaDefaultResourceGroup"))
         parser->setProperty("SchemaDefaultResourceGroup", "schemas"); 

      CEGUI::SchemeManager::getSingleton().create("TaharezLook.scheme");


I am calling this every frame:

Code: Select all

CEGUI::System::getSingleton().renderGUI();


This is called when I press a button. The log is saying that this is being entered.

Code: Select all

                                CEGUI::WindowManager& wmgr = CEGUI::WindowManager::getSingleton();
            CEGUI::Window* myRoot = wmgr.createWindow( "DefaultWindow", "root" );
            CEGUI::System::getSingleton().setGUISheet( myRoot );

            CEGUI::Window* fWnd = wmgr.loadWindowLayout("TreeDemoTaharez.layout");
            myRoot->addChildWindow( fWnd );

            // position a quarter of the way in from the top-left of parent.
            /*fWnd->setPosition( CEGUI::UVector2( CEGUI::UDim( 0.25f, 0 ), CEGUI::UDim( 0.25f, 0 ) ) );
            // set size to be half the size of the parent
            fWnd->setSize( CEGUI::UVector2( CEGUI::UDim( 0.5f, 0 ), CEGUI::UDim( 0.5f, 0 ) ) );
            fWnd->setText( "Hello World!" );*/
            created1 =true;

            Utils::Log("Window Created\n");


This is my CEGUI log.

Code: Select all

 ----------------------------------------------------------------------------------------------------------------------------------
                                          loging report for : 04/13/2010   14:43:20
 ----------------------------------------------------------------------------------------------------------------------------------

14:43:20  |  Platform  |  Info  |  * Initialise: DirectXRenderManager  |  ..\..\..\..\..\MyGUI3.0\Platforms\DirectX\DirectXPlatform\src\MyGUI_DirectXRenderManager.cpp  |  25
14:43:20  |  Platform  |  Info  |  DirectXRenderManager successfully initialized  |  ..\..\..\..\..\MyGUI3.0\Platforms\DirectX\DirectXPlatform\src\MyGUI_DirectXRenderManager.cpp  |  41
14:43:20  |  Platform  |  Info  |  * Initialise: DirectXDataManager  |  ..\..\..\..\..\MyGUI3.0\Platforms\DirectX\DirectXPlatform\src\MyGUI_DirectXDataManager.cpp  |  68
14:43:20  |  Platform  |  Info  |  DirectXDataManager successfully initialized  |  ..\..\..\..\..\MyGUI3.0\Platforms\DirectX\DirectXPlatform\src\MyGUI_DirectXDataManager.cpp  |  70
14:43:20  |  Core  |  Info  |  * Initialise: Gui  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_Gui.cpp  |  82
14:43:20  |  Core  |  Info  |  * MyGUI version 3.0.1  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_Gui.cpp  |  86
14:43:20  |  Core  |  Info  |  * Initialise: ResourceManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceManager.cpp  |  43
14:43:20  |  Core  |  Info  |  ResourceManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceManager.cpp  |  51
14:43:20  |  Core  |  Info  |  * Initialise: LayerManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_LayerManager.cpp  |  44
14:43:20  |  Core  |  Info  |  LayerManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_LayerManager.cpp  |  52
14:43:20  |  Core  |  Info  |  * Initialise: WidgetManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_WidgetManager.cpp  |  66
14:43:20  |  Core  |  Info  |  WidgetManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_WidgetManager.cpp  |  105
14:43:20  |  Core  |  Info  |  * Initialise: InputManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_InputManager.cpp  |  41
14:43:20  |  Core  |  Info  |  InputManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_InputManager.cpp  |  58
14:43:20  |  Core  |  Info  |  * Initialise: SubWidgetManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_SubWidgetManager.cpp  |  44
14:43:20  |  Core  |  Info  |  SubWidgetManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_SubWidgetManager.cpp  |  64
14:43:20  |  Core  |  Info  |  * Initialise: SkinManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_SkinManager.cpp  |  46
14:43:20  |  Core  |  Info  |  SkinManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_SkinManager.cpp  |  54
14:43:20  |  Core  |  Info  |  * Initialise: FontManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_FontManager.cpp  |  43
14:43:20  |  Core  |  Info  |  FontManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_FontManager.cpp  |  52
14:43:20  |  Core  |  Info  |  * Initialise: ControllerManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ControllerManager.cpp  |  41
14:43:20  |  Core  |  Info  |  ControllerManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ControllerManager.cpp  |  51
14:43:20  |  Core  |  Info  |  * Initialise: PointerManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_PointerManager.cpp  |  51
14:43:20  |  Core  |  Info  |  PointerManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_PointerManager.cpp  |  69
14:43:20  |  Core  |  Info  |  * Initialise: ClipboardManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ClipboardManager.cpp  |  82
14:43:20  |  Core  |  Info  |  ClipboardManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ClipboardManager.cpp  |  96
14:43:20  |  Core  |  Info  |  * Initialise: LayoutManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_LayoutManager.cpp  |  42
14:43:20  |  Core  |  Info  |  LayoutManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_LayoutManager.cpp  |  48
14:43:20  |  Core  |  Info  |  * Initialise: DynLibManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_DynLibManager.cpp  |  34
14:43:20  |  Core  |  Info  |  DynLibManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_DynLibManager.cpp  |  36
14:43:20  |  Core  |  Info  |  * Initialise: PluginManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_PluginManager.cpp  |  36
14:43:20  |  Core  |  Info  |  PluginManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_PluginManager.cpp  |  40
14:43:20  |  Core  |  Info  |  * Initialise: LanguageManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_LanguageManager.cpp  |  40
14:43:20  |  Core  |  Info  |  LanguageManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_LanguageManager.cpp  |  44
14:43:20  |  Core  |  Info  |  * Initialise: FactoryManager  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_FactoryManager.cpp  |  34
14:43:20  |  Core  |  Info  |  FactoryManager successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_FactoryManager.cpp  |  37
14:43:20  |  Core  |  Info  |  Load ini file 'core_theme.xml'  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceManager.cpp  |  152
14:43:20  |  Core  |  Info  |  Load ini file 'core_language.xml'  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceManager.cpp  |  152
14:43:20  |  Core  |  Info  |  Load ini file 'core_font.xml'  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceManager.cpp  |  152
14:43:20  |  Core  |  Info  |  ResourceTrueTypeFont 'font_DejaVuSans.17' using texture size 512 x 256  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceTrueTypeFont.cpp  |  203
14:43:20  |  Core  |  Info  |  ResourceTrueTypeFont 'font_DejaVuSans.17' using real height 17 pixels  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceTrueTypeFont.cpp  |  204
14:43:20  |  Core  |  Info  |  ResourceTrueTypeFont 'font_DejaVuSans.14' using texture size 256 x 256  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceTrueTypeFont.cpp  |  203
14:43:20  |  Core  |  Info  |  ResourceTrueTypeFont 'font_DejaVuSans.14' using real height 14 pixels  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceTrueTypeFont.cpp  |  204
14:43:20  |  Core  |  Info  |  Load ini file 'core_resource.xml'  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceManager.cpp  |  152
14:43:20  |  Core  |  Info  |  Load ini file 'core_skin.xml'  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceManager.cpp  |  152
14:43:20  |  Core  |  Info  |  Load ini file 'core_pointer.xml'  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceManager.cpp  |  152
14:43:20  |  Core  |  Info  |  Load ini file 'core_layer.xml'  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceManager.cpp  |  152
14:43:20  |  Core  |  Info  |  Load ini file 'core_settings.xml'  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_ResourceManager.cpp  |  152
14:43:20  |  Core  |  Info  |  Gui successfully initialized  |  ..\..\..\MyGUI3.0\MyGUIEngine\src\MyGUI_Gui.cpp  |  129

User avatar
CrazyEddie
CEGUI Project Lead
Posts: 6760
Joined: Wed Jan 12, 2005 12:06
Location: England
Contact:

Re: Using CEGUI in a directx hook but its not rendering anything

Postby CrazyEddie » Thu Apr 15, 2010 08:45

Hi,

What kind of CEGUI.log is that? Looks nothing like a CEGUI.log to me ;)

Anyway, the issue is almost certainly because various states are set by whatever you are hooking into, but these states are not expected by the CEGUI renderer - which expects most states to be at their default settings (we couldn't realistically set every single rendering state every frame because it would not be good for performance). Largely this topic has been 'done to death', perhaps one of the 'best' threads related to it is this one: viewtopic.php?f=10&t=4620. It relates to D3D 8.1, but the info should also be applicable to D3D 9.

CE.

valleyman86
Just popping in
Just popping in
Posts: 2
Joined: Tue Apr 13, 2010 23:49

Re: Using CEGUI in a directx hook but its not rendering anything

Postby valleyman86 » Thu Apr 15, 2010 10:37

yea I probably copied the wrong log... lol sorry. Well thats an excellent source. I looked and couldn't find much. Thanks!


Return to “Modifications / Integrations / Customisations”

Who is online

Users browsing this forum: No registered users and 12 guests