luis264
Topic Author
Posts: 5
Joined: 14 Dec 2015, 04:32

Noesis Evaluation questions

17 Dec 2015, 00:18

Hello,

We are currently doing an evaluation of Noesis GUI C++ version, and we have some questions that we hope you could answer:

C++ Documentation

we couldn't find any c++ documentation besides some descriptions that are at the beginning of each method in the header files, for example I have no Idea how to implement the interface:
Resource::IResourceProvider
One of its methods is
virtual Ptr<Core::BaseComponent> RequestXAML(const NsChar* name) = 0;
am I supposed to return a BaseComponent? and how do I create that?, Shouldn't I be returning a filestream instead?
Also this function is asking for something like "UI.xaml", but the default resourceprovider looks for "UI.xaml.nsb"
there's no dumentation for that.

Some structs are incomplete (IRenderTarget2D, ITexture2D) do you provide them with the full version ?

Debug Info

We noticed that there is no debug info, If we buy a license are you gonna provide the dll/lib with the debug info?


Static linking

Can we use static linking? if so which platforms?

Only nsb?

I noticed your Gui.XamlPlayer.exe supports xaml loading directly without using the build tool, how can we load xaml directly ?

Thanks.
 
User avatar
jsantos
Site Admin
Posts: 2905
Joined: 20 Jan 2012, 17:18
Contact:

Re: Noesis Evaluation questions

17 Dec 2015, 15:56

we couldn't find any c++ documentation besides some descriptions that are at the beginning of each method in the header files, for example I have no Idea how to implement the interface:
Resource::IResourceProvider
One of its methods is
virtual Ptr<Core::BaseComponent> RequestXAML(const NsChar* name) = 0;
am I supposed to return a BaseComponent? and how do I create that?, Shouldn't I be returning a filestream instead?
Also this function is asking for something like "UI.xaml", but the default resourceprovider looks for "UI.xaml.nsb"
there's no dumentation for that.
We are aware that the documentation of NoesisGUI is not enough. And we are working on it, specially in the integration API. This part is changing a lot in v1.3. We are simplifying everything as much as possible.

For your direct question, you can find information more information in the "Load Resources" section of the BuildTool documentation.

If you inherit from ResourceProvider, you only need to implement the RequestFile function.
Some structs are incomplete (IRenderTarget2D, ITexture2D) do you provide them with the full version ?
Right now, they are incomplete because we don't expect them to be reimplemented. But this is one of the biggest changes in v1.3, we are open sourcing all our renderers and exposing the architecture to allow custom renderer implementations.
We noticed that there is no debug info, If we buy a license are you gonna provide the dll/lib with the debug info?
We have them (used for analyzing dumps sent to the tracker) but they are not being distributed to reduce the size of each release. Yes, we could give you access to them and reevaluate in the future if we they should be included in our packages. May I ask you why do you need them? (profiling?)
Can we use static linking? if so which platforms?
Only licensees with access to source code can do this. But this is also somethng that will probably change in v1.3, we are considering switching all our distributions to static libraries.

The exception here is iOS that is always exposed as a static library.
I noticed your Gui.XamlPlayer.exe supports xaml loading directly without using the build tool, how can we load xaml directly ?
Not possible right now. It is also one of the improvements that will be part of v1.3. You can find more information about future releases of noesisGUI in our Trello board.

Thanks a lot for your feedback. It helps us a lot. And sorry for not being able to solve these problems right now. But with a bit of patience you will have all of them solved.
 
luis264
Topic Author
Posts: 5
Joined: 14 Dec 2015, 04:32

Re: Noesis Evaluation questions

18 Dec 2015, 09:09

Hello,

thanks for replying to my previous questions, nevertheless I have a few more,

1.- When is the version 3.0 coming out ?

not an exact date, just need to know if its gonna be more than 6 months from now,
and if we buy a license before it comes out do we get access to the 3.0 as well?

also are you gonna support lambdas in this new version ?
auto item = doc->root->FindName<MenuItem>("ExitMenuItem");

//So I can do this:
// item->Click() += MakeDelegate([](Noesis::BaseComponent* c, const Noesis::RoutedEventArgs& a)
// {
	// //close the document
// });
//instead of this:

item->Click() += MakeDelegate(this,&NoesisUI::close_doc);
2.-Mouse offset in some computers

do you have an idea of what am I doing wrong?
auto screen_size = m_graphics_system->get_screen_resolution();
doc->renderer->SetSize(screen_size.x, screen_size.y);

doc->renderer->SetAntialiasingMode(AntialiasingMode_PPAA);

doc->root->SetWidth(screen_size.x);
doc->root->SetHeight(screen_size.y);
Image

3.- Offscreen commands

I'm having some problems knowing where to place my offscreen commands (they seem to be used whenver I try to display a menuitem or combobox)
//Executed before begin_scene
event_update += [=]()
{
	doc->renderer->Update(m_timer.elapsedSeconds());
	
	//since we use c++ 11 we need to avoid using the  c++11 asignement  constructor because you compiled the code without c++ 11
	auto renderCommands = doc->renderer->WaitForUpdate();
	doc->commands = renderCommands;

	if (renderCommands.offscreenCommands != 0)
	{
		doc->renderer->Render(renderCommands.offscreenCommands.GetPtr(), false);
		renderCommands.offscreenCommands.Reset();
	}

};

//Execured between begin_scene & end_scene after drawing the 3d world
event_render += [doc,this]()
{
	auto renderCommands = doc->commands;

	doc->renderer->Render(renderCommands.commands.GetPtr(), false);				
};

Everything freezes :-(

Image

4.- How do I close a document ?

(for this I removed the offscreenCommands render)

following your tutorials, the only thing that I think I'm supposed to do is to reset the renderer but that didn't work as expected:

Image

then I tried adding a delay:

Image

----------------------
About the debug symbols, we usually need the mostly for debugging (intellisense)
no symbols.png
nosymbols
no symbols.png (7.8 KiB) Viewed 1974 times
Thanks again for your patience.
 
User avatar
jsantos
Site Admin
Posts: 2905
Joined: 20 Jan 2012, 17:18
Contact:

Re: Noesis Evaluation questions

21 Dec 2015, 08:23

1.- When is the version 3.0 coming out ?
3.0 is planned for Q1 2016. There will be a C++ beta a lot earlier, in fact, the alpha version is already being tested by a few clients.

Yes, if you buy a license now you can upgrade for free to 3.0.

Regarding lambdas, yes, we would like to support them. I have added a card in our Trello board. For now, I have pinned the task for the 1.2.8 version.
2.-Mouse offset in some computers
Without having more detail about your code, I would say that the screen size is not exactly the window client area. Make sure when you send a (0,0) coordinate to the renderer it exactly corresponds to the corner of the window.
Offscreen commands
The freeze is happening because offscreen commands change the current render target surface. You need to restore it (and the viewport dimensions) before rendering your content.
How do I close a document ?
For shutting down noesis you need to:

1. Make sure you don't have any strong references (Ptr<>), if so, you must release them.
2. Release all rendererers.
3. Call Noesis shutdown

Are you able to reproduce the problem in our integration sample?

The mouse_up() function that is crashing is being executed after renderer destruction?

Who is online

Users browsing this forum: Google [Bot] and 1 guest