[Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

What it says on the tin: a place to discuss proposed new features.
User avatar
Nir Hasson
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 363
Joined: Wed Nov 05, 2008 4:40 pm
Location: TLV - Israel
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Nir Hasson »

Hi -

I created a new patch for the D3D9 Render system - it adds multiple device support.
This patch is based on the latest version of Ogre 1.6 updated to the 26.1.09.


Main features -
- Supports generic number of devices.
- Up to (N) full screen render windows allowed.
- On the fly device switch when dragging windowed render window to different disaply monitor
- Multi head feature support when using mutliple full screen windows on multi head cards.

You can get it from https://sourceforge.net/tracker2/?func= ... tid=302997

Nir
TMT
Halfling
Posts: 59
Joined: Thu Aug 23, 2007 8:09 pm

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by TMT »

Nir,
As a user of Thieum's original patch, I'd like to thank you for your first 1.6 patch. I finally had a chance to update our project to 1.6.1 + your patch and the multihead features are working perfectly. My only question is what is the comment about adding 'D3DCREATE_MULTITHREADED' for the fullscreen multihead case? I cannot see that in your patch. I played with adding that flag myself and it offers no speed improvement anyway. Regardless, thanks.

Now you have a second patch that sounds very interesting. I plan to give it a try shortly. Question: when you say it supports a generic number of devices, does that mean even multiple cards (adapters)?
User avatar
Nir Hasson
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 363
Joined: Wed Nov 05, 2008 4:40 pm
Location: TLV - Israel
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Nir Hasson »

Hi -

Thanx for the compliments - I''m happy to know that someone use this patch and that it works for you.
The 'D3DCREATE_MULTITHREADED' flag is required only if you want to use different thread to load you resources, otherwise you will not gain any performance improvement and even suffer from slight performance hit since this flag forces D3D to spend a significant amount of time on synchronization, thus slowing down the render thread (as the D3D9 SDK docs says).

In the new patch it comes in the #ifdef OGRE_THREAD support define - so if ogre complies in multi thread support configuration it will automatically added to the device creation flags.

Regarding your second question the answer is yes - I needed it to support multiple cards and tested it on 4 display monitors - meaning using 4 different devices.

Nir
User avatar
Thieum
Gnome
Posts: 342
Joined: Wed Apr 26, 2006 5:13 pm
Location: Bordeaux, France
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Thieum »

wow, this is impressive !
when you says "- Up to (N) full screen render windows allowed.", do you mean that you can create less render window that the number of attached display device ?

And in the patch I see you don't patch OgreRoot. Does that mean that this patch is cummulative with the previous one or that you can now create multiple fullscreen windows with the default Root::createRenderWindow method ? (it would be awesome)
User avatar
Nir Hasson
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 363
Joined: Wed Nov 05, 2008 4:40 pm
Location: TLV - Israel
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Nir Hasson »

Thanx -

I mean that you can create any number between 1 to N full screen render windows where N is the number of of display monitors.
I didn't patch root since my previous interface in no longer needed - you can simply call Root::createRenderWindow multiple times.
I will release another patch based on user comments and some other resource management improvements in the near future.
User avatar
Thieum
Gnome
Posts: 342
Joined: Wed Apr 26, 2006 5:13 pm
Location: Bordeaux, France
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Thieum »

Great, I will be able to support the dual output mode in the StereoPlugin!
User avatar
Thieum
Gnome
Posts: 342
Joined: Wed Apr 26, 2006 5:13 pm
Location: Bordeaux, France
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Thieum »

I tried to use your patch but I get get an exception :

Code: Select all

[...]
15:08:02: D3D9RenderSystem::_createRenderWindow "Left window", 1280x1024 fullscreen  miscParams: vsync=1280 x 1024 @ 32-bit colour 
15:08:02: D3D9 : Created D3D9 Rendering Window 'Left window' : 1280x1024, 32bpp
15:08:02: D3D9: Vertex texture format supported - PF_FLOAT16_RGB
15:08:02: D3D9: Vertex texture format supported - PF_FLOAT16_RGBA
15:08:02: D3D9: Vertex texture format supported - PF_FLOAT32_RGB
15:08:02: D3D9: Vertex texture format supported - PF_FLOAT32_RGBA
15:08:02: D3D9: Vertex texture format supported - PF_FLOAT16_R
15:08:02: D3D9: Vertex texture format supported - PF_FLOAT32_R
15:08:02: D3D9: Vertex texture format supported - PF_FLOAT16_GR
15:08:02: D3D9: Vertex texture format supported - PF_FLOAT32_GR
15:08:02: RenderSystem capabilities
15:08:02: -------------------------
15:08:02: RenderSystem Name: Direct3D9 Rendering Subsystem
15:08:02: GPU Vendor: nvidia
15:08:02: Device Name: Adapter-0-NVIDIA GeForce 8800 GTX
15:08:02: Driver Version: 6.14.11.8120
15:08:02:  * Fixed function pipeline: yes
15:08:02:  * Hardware generation of mipmaps: yes
15:08:02:  * Texture blending: yes
15:08:02:  * Anisotropic texture filtering: yes
15:08:02:  * Dot product texture operation: yes
15:08:02:  * Cube mapping: yes
15:08:02:  * Hardware stencil buffer: yes
15:08:02:    - Stencil depth: 8
15:08:02:    - Two sided stencil support: yes
15:08:02:    - Wrap stencil values: yes
15:08:02:  * Hardware vertex / index buffers: yes
15:08:02:  * Vertex programs: yes
15:08:02:  * Fragment programs: yes
15:08:02:  * Geometry programs: no
15:08:02:  * Supported Shader Profiles: hlsl ps_1_1 ps_1_2 ps_1_3 ps_1_4 ps_2_0 ps_2_a ps_2_b ps_2_x ps_3_0 vs_1_1 vs_2_0 vs_2_a vs_2_x vs_3_0
15:08:02:  * Texture Compression: yes
15:08:02:    - DXT: yes
15:08:02:    - VTC: no
15:08:02:  * Scissor Rectangle: yes
15:08:02:  * Hardware Occlusion Query: yes
15:08:02:  * User clip planes: yes
15:08:02:  * VET_UBYTE4 vertex element type: yes
15:08:02:  * Infinite far plane projection: yes
15:08:02:  * Hardware render-to-texture: yes
15:08:02:  * Floating point textures: yes
15:08:02:  * Non-power-of-two textures: yes
15:08:02:  * Volume textures: yes
15:08:02:  * Multiple Render Targets: 4
15:08:02:    - With different bit depths: yes
15:08:02:  * Point Sprites: yes
15:08:02:  * Extended point parameters: yes
15:08:02:  * Max Point Size: 10
15:08:02:  * Vertex texture fetch: yes
15:08:02:    - Max vertex textures: 4
15:08:02:    - Vertex textures shared: no
15:08:02:  * Render to Vertex Buffer : no
15:08:02:  * DirectX per stage constants: yes
15:08:02: ResourceBackgroundQueue - threading disabled
15:08:02: Particle Renderer Type 'billboard' registered
15:08:02: SceneManagerFactory for type 'BspSceneManager' registered.
15:08:02: Registering ResourceManager for type BspLevel
15:08:02: SceneManagerFactory for type 'PCZSceneManager' registered.
15:08:02: MovableObjectFactory for type 'PCZLight' registered.
15:08:02: PCZone Factory Type 'ZoneType_Octree' registered
15:08:02: PCZone Factory Type 'ZoneType_Terrain' registered
15:08:02: SceneManagerFactory for type 'OctreeSceneManager' registered.
15:08:02: SceneManagerFactory for type 'TerrainSceneManager' registered.
15:08:02: D3D9RenderSystem::_createRenderWindow "Right window", 1280x1024 fullscreen  miscParams: vsync=1280 x 1024 @ 32-bit colour 
15:08:02: D3D9 : Created D3D9 Rendering Window 'Right window' : 1280x1024, 32bpp
15:08:03: OGRE EXCEPTION(3:RenderingAPIException): Unable to get the swap chain in D3D9RenderWindow::acquireRenderWindowResources at d:\dev\okatra\ogre1.6svn\rendersystems\direct3d9\src\ogred3d9device.cpp (line 879)
[...]
when I try to create two windows with this code

Code: Select all

	bool configure(void)
	{
		if(mRoot->showConfigDialog())
		{

			// get the resolution choosen with the config dialog
			ConfigOptionMap options = mRoot->getRenderSystem()->getConfigOptions();
			String mode = options.find( "Video Mode" )->second.currentValue;
			std::vector<String> tab = StringUtil::split(mode," x@");
			int w,h;
			w = StringConverter::parseInt(tab[0]);
			h = StringConverter::parseInt(tab[1]);

			NameValuePairList miscParams;
			miscParams["vsync"] = options.find( "Video Mode" )->second.currentValue;

			mRoot->initialise(false); // init ogre but do not create windows

			mWindow = mRoot->createRenderWindow("Left window", w, h, true, &miscParams);
			mWindow2 = mRoot->createRenderWindow("Right window", w, h, true, &miscParams);

			// tells the listener to change the focus of the second window when the focus
			// of the first windows has changed
			mFocusListener.setTargetWindow(mWindow2);
			WindowEventUtilities::addWindowEventListener(mWindow,&mFocusListener);
			// gives the focus to the second window because when created, only the first window has the focus
			mFocusListener.windowFocusChange(mWindow); 

			return true;
		}
		else
		{
			return false;
		}
	}
the debug runtime od DirectX also gives this error :

Code: Select all

Direct3D9: (ERROR) :iSwapChainOrdinal is out of range
D3D9 Helper: IDirect3DDevice9::GetSwapChain failed: D3DERR_INVALIDCALL
I have a geforce 8800 with both outputs connected to the same monitor (vga and dvi)
User avatar
Nir Hasson
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 363
Joined: Wed Nov 05, 2008 4:40 pm
Location: TLV - Israel
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Nir Hasson »

Hi -

Sorry for the lake of docs - I'll post a sample code next time -
From what I can see here - you tried to create two full screen rendering windows on the same place,
Current version detects the matching adapter by window location, it's not so convinience, but for now you'll have to pass
the "top" and "left" params in the misc parameters. In future version I plan to add another misc parameter - the display monitor index - so it will be more easy and clear to use.
Anyway try to use the following code instead -

miscParams["top"] = StringConverter::toString((int)0);
miscParams["left"] = StringConverter::toString((int)0);
mWindow = mRoot->createRenderWindow("Left window", w, h, true, &miscParams);

miscParams["top"] = StringConverter::toString((int)0);
miscParams["left"] = StringConverter::toString((int)1280);
mWindow2 = mRoot->createRenderWindow("Right window", w, h, true, &miscParams);


You can enumarate the display monitors instead and grab there working area rect and use it instead of the nasty hard coded -

Nir
User avatar
Thieum
Gnome
Posts: 342
Joined: Wed Apr 26, 2006 5:13 pm
Location: Bordeaux, France
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Thieum »

is there still a "head" parameters for the windows ? can it be used to position the windows on the right display ?

And is there a way to know the number of attached device in ogre ? something in RenderSystemCapabilities ?
(in the 1.4 patch, sinbad added a method getAdapterCount in Ogre::Root)
User avatar
Nir Hasson
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 363
Joined: Wed Nov 05, 2008 4:40 pm
Location: TLV - Israel
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Nir Hasson »

Noop - no "head" parameter,

As I said in future patches i'll add the display adapter index as parameter and i'll take your advise and expose some API from root
to get the displat monitor count.
User avatar
Thieum
Gnome
Posts: 342
Joined: Wed Apr 26, 2006 5:13 pm
Location: Bordeaux, France
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Thieum »

maybe an additional field in renderSystemCapabilities ?

anyway, your patch works well. Now my StereoPlugin can turn any ogre demo in stereo demo rendering the left view on one screen and the right view on the other 8)
Many thanks, Nir !
User avatar
Thieum
Gnome
Posts: 342
Joined: Wed Apr 26, 2006 5:13 pm
Location: Bordeaux, France
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Thieum »

I tried to use the patch in openGL but it didn"t worked correctly
If I create two fullscreen windows, the first creen is fine but i only see a bit a windows on the left of the second screen
If I create two windowed windows (yay!) on two screens, the rendering is non synchronized and the rtt seems swapped. if I move one widonw ion the same screen as the other, everything become fine

I read that the multi monitor support in opengl is minimal and the patch does the maximum it can. What can I expect to work in openGL ? Did you used quad buffer if the card supports it ?
User avatar
Nir Hasson
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 363
Joined: Wed Nov 05, 2008 4:40 pm
Location: TLV - Israel
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Nir Hasson »

Hi - I really didn't get a chance to dig into OpenGL, infect I just did the minimum I could and I hope that someone will "pick the gloves" and make it work.
From my little knowledge in GL I understood that the current mechanism of shared render context will only work on the same graphic card - so if we want to support generic number of monitors this render system should be patched heavily.
Another issue - performance - from what I know on GL (not really much) you can not address specific adapter (unless it's quadro of NVIDIA) so all draw commands go to all cards
:(
Q: How do OpenGL programs behave with multiple graphics cards on Windows 2000/XP?
A: The operating system dispatches the OpenGL commands to all cards. This allows to move the window across cards, but incurs a small performance overhead.
This is taken from here http://www.equalizergraphics.com/docume ... GLFAQ.html

Again - I'll be happy if you can handle the OpenGL render system.
User avatar
Thieum
Gnome
Posts: 342
Joined: Wed Apr 26, 2006 5:13 pm
Location: Bordeaux, France
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Thieum »

I don't have much knowledge of openGL either. I cannot promise I can handle the GL rendersystem but I will see what I can do. The problem is that I don't have a second screen at home.
I would like to remove the stereo stuff from the quad buffer patch because it was hard-coded it in the scene manager and because my stereo manager has much more flexibility. And then move the quad buffer (if supported) and multiple contexts support in your patch.

Anyway, I made some researches about the quad buffer mode yesterday (I wanted to know if I could merge the quad buffer patch with your patch) and It is very difficult to find documentation such specific subjects in openGL (thanks for your link, btw)
Sheen
Halfling
Posts: 58
Joined: Mon May 26, 2008 9:32 pm
Location: St. Petersburg, Russia
x 1

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Sheen »

Hi, Nir
I tried to apply your second patch and I have some errors during linking:

Code: Select all

1>Linking...
1>   Creating library ..\..\..\lib/RenderSystem_Direct3D9.lib and object ..\..\..\lib/RenderSystem_Direct3D9.exp
1>OgreD3D9GpuProgram.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall Ogre::D3D9Resource::~D3D9Resource(void)" (??1D3D9Resource@Ogre@@UAE@XZ)
1>OgreD3D9GpuProgram.obj : error LNK2001: unresolved external symbol "public: __thiscall Ogre::D3D9Resource::D3D9Resource(void)" (??0D3D9Resource@Ogre@@QAE@XZ)
1>OgreD3D9HardwareIndexBuffer.obj : error LNK2001: unresolved external symbol "public: enum Ogre::D3D9ResourceCreationPolicy __thiscall Ogre::D3D9ResourceManager::getCreationPolicy(void)const " (?getCreationPolicy@D3D9ResourceManager@Ogre@@QBE?AW4D3D9ResourceCreationPolicy@2@XZ)
1>OgreD3D9MultiRenderTarget.obj : error LNK2001: unresolved external symbol "public: class Ogre::D3D9Device * __thiscall Ogre::D3D9DeviceManager::getDevice(unsigned int)" (?getDevice@D3D9DeviceManager@Ogre@@QAEPAVD3D9Device@2@I@Z)
1>OgreD3D9MultiRenderTarget.obj : error LNK2001: unresolved external symbol "public: unsigned int __thiscall Ogre::D3D9DeviceManager::getDeviceCount(void)" (?getDeviceCount@D3D9DeviceManager@Ogre@@QAEIXZ)
1>OgreD3D9MultiRenderTarget.obj : error LNK2001: unresolved external symbol "public: class Ogre::D3D9Device * __thiscall Ogre::D3D9DeviceManager::getActiveRenderTargetDevice(void)" (?getActiveRenderTargetDevice@D3D9DeviceManager@Ogre@@QAEPAVD3D9Device@2@XZ)
1>OgreD3D9MultiRenderTarget.obj : error LNK2001: unresolved external symbol "public: void __thiscall Ogre::D3D9DeviceManager::setActiveRenderTargetDevice(class Ogre::D3D9Device *)" (?setActiveRenderTargetDevice@D3D9DeviceManager@Ogre@@QAEXPAVD3D9Device@2@@Z)
1>OgreD3D9MultiRenderTarget.obj : error LNK2001: unresolved external symbol "public: bool __thiscall Ogre::D3D9Device::isDeviceLost(void)" (?isDeviceLost@D3D9Device@Ogre@@QAE_NXZ)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: __thiscall Ogre::D3D9DeviceManager::~D3D9DeviceManager(void)" (??1D3D9DeviceManager@Ogre@@QAE@XZ)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: __thiscall Ogre::D3D9DeviceManager::D3D9DeviceManager(void)" (??0D3D9DeviceManager@Ogre@@QAE@XZ)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: void __thiscall Ogre::D3D9DeviceManager::destroyInactiveRenderDevices(void)" (?destroyInactiveRenderDevices@D3D9DeviceManager@Ogre@@QAEXXZ)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: void __thiscall Ogre::D3D9DeviceManager::linkRenderWindow(class Ogre::D3D9RenderWindow *)" (?linkRenderWindow@D3D9DeviceManager@Ogre@@QAEXPAVD3D9RenderWindow@2@@Z)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: class Ogre::D3D9Device * __thiscall Ogre::D3D9DeviceManager::getActiveDevice(void)" (?getActiveDevice@D3D9DeviceManager@Ogre@@QAEPAVD3D9Device@2@XZ)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: void __thiscall Ogre::D3D9ResourceManager::setCreationPolicy(enum Ogre::D3D9ResourceCreationPolicy)" (?setCreationPolicy@D3D9ResourceManager@Ogre@@QAEXW4D3D9ResourceCreationPolicy@2@@Z)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: __thiscall Ogre::D3D9ResourceManager::~D3D9ResourceManager(void)" (??1D3D9ResourceManager@Ogre@@QAE@XZ)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: __thiscall Ogre::D3D9ResourceManager::D3D9ResourceManager(void)" (??0D3D9ResourceManager@Ogre@@QAE@XZ)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "protected: class Ogre::D3D9RenderWindow * __thiscall Ogre::D3D9Device::getPrimaryWindow(void)" (?getPrimaryWindow@D3D9Device@Ogre@@IAEPAVD3D9RenderWindow@2@XZ)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: struct _D3DCAPS9 const & __thiscall Ogre::D3D9Device::getD3D9DeviceCaps(void)const " (?getD3D9DeviceCaps@D3D9Device@Ogre@@QBEABU_D3DCAPS9@@XZ)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: unsigned int __thiscall Ogre::D3D9Device::getAdapterNumber(void)const " (?getAdapterNumber@D3D9Device@Ogre@@QBEIXZ)
1>OgreD3D9RenderSystem.obj : error LNK2001: unresolved external symbol "public: struct IDirect3DDevice9 * __thiscall Ogre::D3D9Device::getD3D9Device(void)" (?getD3D9Device@D3D9Device@Ogre@@QAEPAUIDirect3DDevice9@@XZ)
1>OgreD3D9RenderWindow.obj : error LNK2001: unresolved external symbol "public: struct IDirect3DSurface9 * __thiscall Ogre::D3D9Device::getBackBuffer(class Ogre::D3D9RenderWindow *)" (?getBackBuffer@D3D9Device@Ogre@@QAEPAUIDirect3DSurface9@@PAVD3D9RenderWindow@2@@Z)
1>OgreD3D9RenderWindow.obj : error LNK2001: unresolved external symbol "public: struct IDirect3DSurface9 * __thiscall Ogre::D3D9Device::getDepthBuffer(class Ogre::D3D9RenderWindow *)" (?getDepthBuffer@D3D9Device@Ogre@@QAEPAUIDirect3DSurface9@@PAVD3D9RenderWindow@2@@Z)
1>OgreD3D9RenderWindow.obj : error LNK2001: unresolved external symbol "public: void __thiscall Ogre::D3D9Device::present(class Ogre::D3D9RenderWindow *)" (?present@D3D9Device@Ogre@@QAEXPAVD3D9RenderWindow@2@@Z)
1>OgreD3D9RenderWindow.obj : error LNK2001: unresolved external symbol "public: void __thiscall Ogre::D3D9Device::invalidate(void)" (?invalidate@D3D9Device@Ogre@@QAEXXZ)
1>OgreD3D9RenderWindow.obj : error LNK2001: unresolved external symbol "public: bool __thiscall Ogre::D3D9Device::validate(class Ogre::D3D9RenderWindow *)" (?validate@D3D9Device@Ogre@@QAE_NPAVD3D9RenderWindow@2@@Z)
1>OgreD3D9RenderWindow.obj : error LNK2001: unresolved external symbol "public: void __thiscall Ogre::D3D9Device::detachRenderWindow(class Ogre::D3D9RenderWindow *)" (?detachRenderWindow@D3D9Device@Ogre@@QAEXPAVD3D9RenderWindow@2@@Z)
1>OgreD3D9Texture.obj : error LNK2001: unresolved external symbol "public: class Ogre::D3D9Device * __thiscall Ogre::D3D9DeviceManager::getDeviceFromD3D9Device(struct IDirect3DDevice9 *)" (?getDeviceFromD3D9Device@D3D9DeviceManager@Ogre@@QAEPAVD3D9Device@2@PAUIDirect3DDevice9@@@Z)
1>OgreD3D9Texture.obj : error LNK2001: unresolved external symbol "public: enum _D3DFORMAT __thiscall Ogre::D3D9Device::getBackBufferFormat(void)const " (?getBackBufferFormat@D3D9Device@Ogre@@QBE?AW4_D3DFORMAT@@XZ)
1>..\..\..\lib/RenderSystem_Direct3D9.dll : fatal error LNK1120: 28 unresolved externals
Do you know how to solve this problem?
If not, can you send me .dll and .lib files to sheen[a]thedays.ru ? I need to get multimonitor working by tomorrow and don't have much time.
Hope you can help.
User avatar
Nir Hasson
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 363
Joined: Wed Nov 05, 2008 4:40 pm
Location: TLV - Israel
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Nir Hasson »

Hi -

Seems like simple linking problem I'll try to help -

Check that the new sources I added are included in the project (I only changed the vc_8 project in this patch) - so if you are using different
IDE you'll have to add manually the following to the compile list:
1. OgreD3D9Device
2. OgreD3D9DeviceManager
3. OgreD3D9Resource
4. OgreD3D9ResourceManager

If these files already compiles with the RenderSystem_Direct3D9 project try the rebuild project option.

Hope I helped

:D
Sheen
Halfling
Posts: 58
Joined: Mon May 26, 2008 9:32 pm
Location: St. Petersburg, Russia
x 1

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Sheen »

Yes, I simply forgot to add these files. Thank you for your help :)
User avatar
toglia
Gnome
Posts: 336
Joined: Sat Dec 08, 2007 4:28 am
Location: Canada
x 7

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by toglia »

I was a current user of the previews patch, finally I got the chance to change my project to Shoggoth. Everything is working like a charm. Thanks Nir!!! :D

Should I worry of the stability of the current trunk code?
User avatar
Nir Hasson
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 363
Joined: Wed Nov 05, 2008 4:40 pm
Location: TLV - Israel
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Nir Hasson »

Hi -
I just submitted a third version of multiple render windows patch for 1.6 version.
You will have to update your Ogre source code to current day and then apply this patch.
For details and download use the following link
https://sourceforge.net/tracker2/?func= ... tid=302997
User avatar
Nir Hasson
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 363
Joined: Wed Nov 05, 2008 4:40 pm
Location: TLV - Israel
x 2
Contact:

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Nir Hasson »

Hi toglia -

Trunk vs. Released version always has the tradeoff of new features against stability. I can tell you that I did my best but I guess there is always place
to improve things and that some bugs are there. Anyway a third patch for the trunk will be added in the near future - it will be based on current patch.
fred11
Gnoblar
Posts: 4
Joined: Wed Jun 03, 2009 11:43 pm

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by fred11 »

For anyone having trouble with the patch as posted here http://www.ogre3d.org/forums/viewtopic. ... 25#p324603

I normalized the line endings of the patch file to DOS format, and then the patch worked great!
kaolite
Halfling
Posts: 78
Joined: Fri Feb 06, 2009 7:04 pm

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by kaolite »

Is always this patch necessary to use Ogre with multihead support (two view with differents size ) ?

Best regards,
User avatar
Assaf Raman
OGRE Team Member
OGRE Team Member
Posts: 3092
Joined: Tue Apr 11, 2006 3:58 pm
Location: TLV, Israel
x 76

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Assaf Raman »

only if you want to use more then one monitor.
Watch out for my OGRE related tweets here.
kaolite
Halfling
Posts: 78
Joined: Fri Feb 06, 2009 7:04 pm

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by kaolite »

thanks for your answer.
Do you think it could be usefull to solve my issue : viewtopic.php?f=2&t=50748 ?
I have read all forum thread, try many things .. and I can't resolve this.
How do install this patch (I am on windows using msvc to compile ogre) ?

best regards,

kao
User avatar
Assaf Raman
OGRE Team Member
OGRE Team Member
Posts: 3092
Joined: Tue Apr 11, 2006 3:58 pm
Location: TLV, Israel
x 76

Re: [Solved] multihead/multiscreen in mainstream 1.6 (DirectX)

Post by Assaf Raman »

1. Download TortoiseSVN.
2. Create a dir named OGRE.
3. Right click it, use tortoisesvn to get the code from https://svn.ogre3d.org/svnroot/ogre/branches/v1-6
4. Right click the folder once more, and then apply the patch.
5. Add the OGRE dependencie files to that dir.
6. Compile.
Watch out for my OGRE related tweets here.
Post Reply