Sign in to follow this  
Mythar

DirectX9 GUI test

Recommended Posts

Hello all, as you might know, I have been working on an UI for DX9. Here is the first test, and I would like to know how it performs on diffrent 3D Cards. If you would test it, I would be very happy :) http://www.microtower.com/temp/ui_test.zip PS. Dont worry about resizing the main window, i did not write the code to handle the internal resizeing of the UI. Also, when in Fullscreen mode (toggle by Alt+Enter) the Caption bar of the window will "flip" abit, as the FPS is displayed here. This test, is simply to see if I got the DX9 code to work as intended, my first try at DX9 :) The GUI was coded from the start to work on Interfaces, (this is also my first try at doing interfaces) so that other users can use the .dll, as i plan on releasing the GUI when I have it ready :)

Share this post


Link to post
Share on other sites
Absolutely amazing! Your work is professional quality and I could just imagine seeing that in a game. The only bug I noticed was that words didn't wrap in the text box but that shouldn't be hard to fix. And trust me, that bug is nothing compared to all the work you must have put into this. Great job!

Share this post


Link to post
Share on other sites
looks great! the only issue i had was when i went into fullscreen mode, the background image didn't stretch. the internal windows could be moved to the 'extra' space, which was blue. not sure if you have code in to handle this yet -- i see you mention it for resizing the main window.

Share this post


Link to post
Share on other sites
Runs great on my ATI Radeon Mobility 9700

Nice work, your controls look good and are very smooth in their interactions.

Constructive critisism:
You shouldn't be able to scroll more than a single line past the bottom of a list box.

Share this post


Link to post
Share on other sites
Quote:
Original post by microcyb
Running Xp pro SP 1
Access Viaolation at Address 0037ce in module dmx9.dll read of address 00000000


yeah, got that once. But apart from that it's absolutely amazing, terrific work!

Share this post


Link to post
Share on other sites
Running on a GeForce 6800 GT and P4 2.66Gz.

Windowed mode: ~800 FPS
Bugs:
- Just starting up the program:

- Maximizing a window


Fullscreen: ? FPS
Bugs:
- Starting up in some resolutions result in something similar to what happens in windowed mode.
- Maximizing a window


Edit:
And when I played around with resizing some windows:


There were some other problems related to resizing too but I didn't take any screenshots. I can do it if you want me to.

Looks great :)

- Benny -

[Edited by - benstr on September 2, 2004 5:49:46 PM]

Share this post


Link to post
Share on other sites
Nice GUI. I could get the same textured look if I really wanted, but here's a few notes that may improve your UI:
1. Use higher resolution fonts.
2. Don't use scrambled repeated textures in background, that worsens the text above it.
3. And keep up the good work! :)

Share this post


Link to post
Share on other sites
First, thx for testing my GUI :)

vnillabrent : Words do wrap, but your right, there is a small bug.

jeffzi : Yes I know, I was lasy and did not do all the resizing functions yet. Dont worry about it, ill fix it :)

SnprBoB86 : The scrollbars have been giving me a headage from day 1, but ill try and fix it.

microcyb + xsirxx : The Access Viaolation happens if you place the mouse were the "hint" would pop up in the GUI, when you press Ok on the Setup-Dialog. As the "mousemove event" tries to set the "Hint" be4, the UI has been created.

benstr : Thx for posting the screenshoots.
I have a pretty good idea of why you get the bugs you get.
Your GeForce 6800, is simply to "old", sorry :)
The "background window" texture is 800x600 and if your 3D Card requires POW2/SQUAREONLY, the CreateTexture function will resize
the texture to 1024x1024, and you 3D Card might not surpport
this or mess up the rest if you run out of mem.
This is also what happens when you get the bug on a "fullscreen" window, your 3D card simply cant handle textures that big.
32MB is abit low now days :)
If you take a look at the last SS you posted, you can see that the "window" texture was resized to POW2 and SQUREONLY, this is why you can see the controls outside the window frame.
Ill put in a check for this :)

HellRiZZer :
1. The GUI has been designed to handle any TT font, so to get a better font, a user of the GUI could simply change the font.
2. This is just test GFX :)


Ill post a new download when i have had a chance to fix the bugs, and again thx all for testing it out :)

Share this post


Link to post
Share on other sites
I am pretty sure my card is not too old and I doubt there are any problems with the memory since I have 256MB on my card. The GeForce 6800 series is the best nVidia have so I don't think that is my problem since my card can handle 4096x4096 textures [smile]

Here you have my CAPs for my video card.

Edit: Cut out the adapter formats.

Hope that helps.
- Benny -

Share this post


Link to post
Share on other sites
benstr : i had a look at your caps and your card dose not have D3DPTEXTURECAPS_NONPOW2CONDITIONAL , this is why the texture is resized.
And somehow this resizing mess up on your card.

It seems to me, that when checking for POW2 on GeForce
I need to check D3DPTEXTURECAPS_POW2 and
on ATI cards I need to check for D3DPTEXTURECAPS_NONPOW2CONDITIONAL
to avoid resizeing the texture.

The problem could be easly fixed by making all the "source" textures the power of 2, but i dont realy wana do that :)

PS. sorry bout the "old" 3D card comment, i mixed your post up with one of the other posts :)

Guess im back at my old problem : GeForce vs. ATI.. :(

[Edited by - Mythar on September 4, 2004 2:35:28 AM]

Share this post


Link to post
Share on other sites
I was the AP above with the Mobilty 4 card.

I get two different error messages depending on the combination of window mode and vertex processing mode...

Hardware VP || Windowed: One message that says "access violation at address 0037C3E3 in module 'dmx9.dll'. Read of address 00000000." After that, I get an infinite loop of error messages that say "Access violation at address 0043F1DE in module 'ui_test.exe'. Read of address 00000000."

Software VP && Fullscreen: One message that says "CreateTexture3: D3DERR_INVALIDCALL".

- Fuzz

Share this post


Link to post
Share on other sites
It looks great ! Strangly enough I got the access violation first time i tried it, then i tried again and it worked. Geuss i had the mouse in a different place. I really like how it looks - good job !!

Share this post


Link to post
Share on other sites
Holy Fuzz : Im not sure why you get the access violation, it might be that you simply run out of mem. or maby your card dose not surpport FMT_A8R8G8B8 or if it dose, it might not be surpported in the mode you try to run or it might be a bug that has to do with the vertex buffer pool.

Anyways, i removed the "hint" so it sould no longer cuz a bug on start up.

benstr + Etnu : I put in a new check for POW2, hopefully it will work on the GeForce card, otherwise im back at the bug I had when first making the GUI for DX7.
The bug was this : when using a POW2 texture on a GeForce card, with TLVERTEX, it mess up. why ?, I still have no idea.
For some resion it has to be non-POW2 to work correctly on GeForce.
It might have something to do with the AspectRatio, but someone on the board might know ?
(texture cuzing the bug was 256x32)
It might not be the same bug, but the result looks the same.

I also fixed the other bugs and internal GUI windows should now, resize correctly.

http://www.microtower.com/temp/ui_test.zip


[Edited by - Mythar on September 9, 2004 10:53:55 AM]

Share this post


Link to post
Share on other sites
Just a quick question :)

As I want my GUI to be useable by c/c++/VB users, I need to know a littel of how I should handle some of the typedefs.
(I wrote it in pascal)

Pascal :

TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);

is this allowed in c++ etc ?

Events :

TUIEvent = procedure(Sender : TUISender) of Object;

is this allowed, or should it be :

TUIEvent = procedure(Sender : TUISender) stdcall; ?

ofcuz a pascal procedure, would just be a void function in c++

This is for the header file, for the .dll

Share this post


Link to post
Share on other sites
Mythar,

Very nice work, I'd have to say I prefer this over the sample GUI included with the DX9.0C SDK by far....it's cleaner and smoother overall.

It worked perfectly on my system with no issues with lag whatsoever. My system is:

P4 3.2
Radeon 9800xt (Cat.4.8)

Keep up the good work.

Permafried-

Share this post


Link to post
Share on other sites
Wow, very well done! I have just two simple suggestions: When a window's control has the text focus, like the main window when the user clicks on the edit box, that window should remain opaque. Right now you can chat on the main window while it's drawn at 50% transparency just by not having the mouse over it, which is weird. Also, clicking the ListView categories should sort by that category, and clicking it again should reverse the order. So if it by default lists the contents alphabetically by caption, clicking "Caption" should make it sort in reverse alphabetical order by caption.

Share this post


Link to post
Share on other sites
Permafried- : thx :)

CGameProgrammer : all you have to do, is toggle the window property "TransparentOnComponentHasFocus" to make it stay non-transparent, when a component in the window has focus.
ill put in a sort later on, but right now, Im just checking to see how it performs on diffrent 3D cards :)

I realy need to know if its working on GeForce cards. As I only have an ATI card, I cant test it myself.

Please test it on GeForce :)

PS. I also need to know about the typedefs please :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this