Jump to content
  • Advertisement
Sign in to follow this  
BlackBox

Designing/implementing a Complex Interface - What to use?

This topic is 5048 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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!

Share this post


Link to post
Share on other sites
Advertisement
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

Share this post


Link to post
Share on other sites
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


Share this post


Link to post
Share on other sites
GDI = Graphics device interface.

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.

Share this post


Link to post
Share on other sites
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:

// 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

Share this post


Link to post
Share on other sites
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.




Share this post


Link to post
Share on other sites
Quote:
Original post by BlackBox
Great so I guess my best choice is .NET using Visual C++...
Currently, .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.

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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!