Designing/implementing a Complex Interface - What to use?
Hi,
Here is my project:
"I need to design an interface which is very "user friendly" and it uses OPENGL (big icons, easy file loading, file saving, etc...).
But it also needs to record all the user actions in a log file, making it possible to replicate the user’s actions. "
Here is where my problem starts >>
1. I need to use OPENGL with all the required GLSL extensions; can I use C# or its better to use VISUAL C++? (By the way, I don't like to use "open libraries" from other people, especially if they are not supported by OPENGL or are incomplete).
2. Should I learn WINDOWS API (WIN32)? Or is it too late (windows longhorn)?
3. Should I use MCF?
4. Can I use .NET? if yes, can I do nice windows using just VISUAL STUDIO C++ with .NET? Also, does C++ .NET allow OPENGL AND GLSL run nicely?
Sorry for asking too many questions... :)
By the way I have access to visual studio .net 2003 professional. Also I don't know DIRECTX but I do know OPENGL.
This project is not a games engine but it uses very complex computer graphics and shading languages.
Thanks a lot!
Your requirements seem incomplete: Why do you need to use OpenGL - that is mainly a 3D graphics interface and your requirement seem to be easily doable using simple GDI.
As to what language to use: what platforms must the program run on? Using Win32 and GDI, it'll work on any Windows platform (Win95 and beyond). The .Net system works on most Windows system (it's not supported on Win95) and requires extra stuff to be installed (the .Net redistributables). MFC is a C++ wrapper to basic Win32/GDI code - it adds an overhead to the size of the application and you do need to understand the way Win32 works to get the most out of it.
Skizz
As to what language to use: what platforms must the program run on? Using Win32 and GDI, it'll work on any Windows platform (Win95 and beyond). The .Net system works on most Windows system (it's not supported on Win95) and requires extra stuff to be installed (the .Net redistributables). MFC is a C++ wrapper to basic Win32/GDI code - it adds an overhead to the size of the application and you do need to understand the way Win32 works to get the most out of it.
Skizz
Quote:Original post by Skizz
Your requirements seem incomplete: Why do you need to use OpenGL - that is mainly a 3D graphics interface and your requirement seem to be easily doable using simple GDI.
As to what language to use: what platforms must the program run on? Using Win32 and GDI, it'll work on any Windows platform (Win95 and beyond). The .Net system works on most Windows system (it's not supported on Win95) and requires extra stuff to be installed (the .Net redistributables). MFC is a C++ wrapper to basic Win32/GDI code - it adds an overhead to the size of the application and you do need to understand the way Win32 works to get the most out of it.
Skizz
Thanks for your answer. :)
Well, I use OPENGL for doing complex 3D representations.
What I have in mind is an interface like 3D studio max, where you have your tool boxes on one side but also small renderable windows.
Im going to use WINDOWS, OPENGL and GLSL mainly.
By the way, im not 100% sure what is GDI? can I used it with VISUAL C++ and add OPENGL parts?
Also the project is going to take two years, so it is wise to learn WINDOWS API or MFC? or can I just go straigth to .NET and do an interface like maya or 3d studio max?
Thanks
GDI = Graphics device interface.
It's basically the API you use in Win32 apps to draw things.
If you're happy with using .Net that's a better option than win32 API or MFC (IMO). You can use WinForms in .Net which are pretty simple and should make the UI side of your less complex (though apps like Maya and 3DS have pretty complex interfaces so it will still require some work). You can use OpenGL from within .Net and I'm pretty sure you should be able to use it alongside WinForms. I've never done such a thing but you should be able to find some information on doing it on the net.
It's basically the API you use in Win32 apps to draw things.
Quote:Also the project is going to take two years, so it is wise to learn WINDOWS API or MFC? or can I just go straigth to .NET and do an interface like maya or 3d studio max?
If you're happy with using .Net that's a better option than win32 API or MFC (IMO). You can use WinForms in .Net which are pretty simple and should make the UI side of your less complex (though apps like Maya and 3DS have pretty complex interfaces so it will still require some work). You can use OpenGL from within .Net and I'm pretty sure you should be able to use it alongside WinForms. I've never done such a thing but you should be able to find some information on doing it on the net.
GDI is the user interface / graphics processing part of Win32 - the buttons, icons, menus, text and bitmap drawing and all that.
I did mean to add that using vanilla Win32 can make the logging you want to do much easier than the other methods:
will save windows messages to a log file and then
when you want to replay the messages. Be careful to store the window identifiers and not the window handles as these may change. You'll also want to add window message times as well.
To implement a 3DS Max style interface create windows in the following hierarchy:
and then your main window's WM_SIZE handler needs to arrange all the components within the main window.
Skizz
I did mean to add that using vanilla Win32 can make the logging you want to do much easier than the other methods:
// message loop preamble LogMessage (&msg); TranslateMessage (&msg); DispatchMessage (&msg);// message loop postamble
will save windows messages to a log file and then
while (!eof (log_file)){ ReadMessage (&msg, log_file); TranslateMessage (&msg); DispatchMessage (&msg);}
when you want to replay the messages. Be careful to store the window identifiers and not the window handles as these may change. You'll also want to add window message times as well.
To implement a 3DS Max style interface create windows in the following hierarchy:
main window |- menu |- tool bar |- tab view | |-creation dialogs | |-edit dialogs | |-other dialogs |-view windows (between 1 and 4) with an OpenGL context added |-status bar
and then your main window's WM_SIZE handler needs to arrange all the components within the main window.
Skizz
Great so I guess my best choice is .NET using Visual C++ and OpenGL.
Thanks everyone.
By the way, more comments in this topics are welcome.
Thanks everyone.
By the way, more comments in this topics are welcome.
Quote:Original post by BlackBoxCurrently, .NET is easier and more rational in C#. C++/CLI should ameiliorate the disparity, but that's not due for a while yet. If, however, you know C++ and don't know C#, stick with what you know.
Great so I guess my best choice is .NET using Visual C++...
Quote:...and OpenGL.You don't need OpenGL for the UI. For a desktop application (as opposed to an in-game UI), OpenGL is a negative. Constrain your use of 3D to the viewport.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement