The program is NVMax
You can get it here
http://www.teamad.net/tweaks/geforce.html
It''s for the GeForce. I don''t know what you have so it may or may not work. You could probably get a similar program for any graphics card.
As for getting it to run blisteringly fast, the secret is rendering a couple textured quads and a bit of text. It''s ~350FPS at 1024x768x32bit. It''s 600FPS at 640x480x32bit.
That''s with a Duron 700 and a GeForce 2 MX.
It drops down to ~150 in 1024x768x32bit when I start getting a bunch of stuff on the screen.
Ben
IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Tiberian Merchandise!!!! | GameShot ]
Frame Rates
quote:Original post by KalvinBOh, ok. I just want to doit the right way, to avoid complications.
It''s for the GeForce. I don''t know what you have so it may or may not work. You could probably get a similar program for any graphics card.
quote:Original post by KalvinBOk, that could mean I''m not so bad after all:
As for getting it to run blisteringly fast, the secret is rendering a couple textured quads and a bit of text. It''s ~350FPS at 1024x768x32bit. It''s 600FPS at 640x480x32bit.
That''s with a Duron 700 and a GeForce 2 MX.
It drops down to ~150 in 1024x768x32bit when I start getting a bunch of stuff on the screen.
Ben
Celleron 400 / Duron 700
Riva TNT2 / GeForce 2 MX
With vsinc / Without vsinc
I: 80FPS / You: 450FPS
quote:Original post by xaxa
presentParameters.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; presentParameters.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
[edited by - xaxa on October 16, 2002 12:32:50 AM]
It is failing because you are setting the presentation interval to D3DPRESENT_INTERVAL_IMMEDIATE, when you should be setting to D3DPRESENT_INTERVAL_DEFAULT. You should be setting D3DPRESENT_RATE_DEFAULT to a number, like 85. I am not sure if this is the exact problem as I did not look through all of your code.
The program the KevinB uses is not something that you should consider. It is not a practical program and it is just getting around the problem instead of solving it. This software can potentially harm your hardware and I would strongly advise against it. You may get high frame rates with this program, but this renders you useless as a programmer becuase everyone else you send your program to might be running at 50 fps.
¬_¬
quote:Original post by Fuzztrek
It is failing because you are setting the presentation interval to D3DPRESENT_INTERVAL_IMMEDIATE, when you should be setting to D3DPRESENT_INTERVAL_DEFAULT. You should be setting D3DPRESENT_RATE_DEFAULT to a number, like 85. I am not sure if this is the exact problem as I did not look through all of your code.
When I do this:
presentParameters.FullScreen_RefreshRateInHz = 85;
presentParameters.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
The system hangs. Using INTERVAL_IMMEDIATE I increased the framerate in 20 units.
quote:The program the KevinB uses is not something that you should consider. It is not a practical program and it is just getting around the problem instead of solving it. This software can potentially harm your hardware and I would strongly advise against it. You may get high frame rates with this program, but this renders you useless as a programmer becuase everyone else you send your program to might be running at 50 fps.
Thankyou for the warning... that program looks pretty obscure...
Hmm.. I looked through your code and I can''t really see what would be causing it to hang. Here is what I do when I initialize my app:
That''s what I do. THe only thing that I see is different is taht you set your back buffer swap effect to discard, while i only set it to discard if I am in windowed mode, and to flip if i am in fullscreen. I''m not sure that this makes a difference at all, and I am by no means saying that my way is better. I just think that since it does not work one way that it should work, you should investigate a little bit. Your way might be perfectly correct, but if both ways don''t work something might be a miss.
Hope this helps!
Fuzztrek
¬_¬
// Get D3D object if((pro_lpD3D = Direct3DCreate8(D3D_SDK_VERSION)) == NULL){ return E_FAIL; } // Clear out D3DPP structure ZeroMemory(&pro_D3DPP, sizeof(D3DPRESENT_PARAMETERS)); if(Windowed == SS_WIND){ // Get D3DDM structure if(FAILED(pro_lpD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &pro_D3DDM))){ return E_FAIL; } // Set presentation parameters pro_D3DPP.Windowed = TRUE; // Set windowed to true pro_D3DPP.SwapEffect = D3DSWAPEFFECT_DISCARD; // Set swap effect to discard pro_D3DPP.BackBufferFormat = pro_D3DDM.Format; // Set color format to the same as D3DDM structure pro_D3DPP.EnableAutoDepthStencil = TRUE; pro_D3DPP.AutoDepthStencilFormat = D3DFMT_D16; }else if(Windowed == SS_FULL){ // Fill out D3DDM structure pro_D3DDM.Width = sWidth; // passed param. default: 800 pro_D3DDM.Height = sHeight; // passed param. default: 600 pro_D3DDM.Format = sBPP; // passed param. default: D3DFMT_A8R8G8B8 (32-bit true color) pro_D3DDM.RefreshRate = sRFR; // passed param. default: 0 (D3D default) // Set presentation parameters pro_D3DPP.Windowed = FALSE; // Set windowed to false pro_D3DPP.SwapEffect = D3DSWAPEFFECT_FLIP; // Set swap effect to flip pro_D3DPP.FullScreen_RefreshRateInHz = sRFR; // Set refresh rate to passed param pro_D3DPP.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; // Set presentation interval to default pro_D3DPP.BackBufferFormat = pro_D3DDM.Format; // Set color format to the same as D3DDM structure pro_D3DPP.BackBufferWidth = pro_D3DDM.Width; pro_D3DPP.BackBufferHeight = pro_D3DDM.Height; pro_D3DPP.EnableAutoDepthStencil = TRUE; pro_D3DPP.AutoDepthStencilFormat = D3DFMT_D16; }
That''s what I do. THe only thing that I see is different is taht you set your back buffer swap effect to discard, while i only set it to discard if I am in windowed mode, and to flip if i am in fullscreen. I''m not sure that this makes a difference at all, and I am by no means saying that my way is better. I just think that since it does not work one way that it should work, you should investigate a little bit. Your way might be perfectly correct, but if both ways don''t work something might be a miss.
Hope this helps!
Fuzztrek
¬_¬
You should never set the refresh rate in your app unless a) you''re just playing around and do not plan on distributing, or b) you know how to set it correctly, based upon the actual card/monitor settings.
Hardcoding the refresh rate in an app is just as dangerous as using some third party utility and opens you and your company up to potential law suits. At least a third party utility would be used by the end user, so damage to their equipment would be their fault and not yours.
Hardcoding the refresh rate in an app is just as dangerous as using some third party utility and opens you and your company up to potential law suits. At least a third party utility would be used by the end user, so damage to their equipment would be their fault and not yours.
"At least a third party utility would be used by the end user, so damage to their equipment would be their fault and not yours."
Yep. Not everyone is a big fan of tearing. The only reason you should ever uncap your framerate is for testing purposes. If you want to know how fast your app is really running you have to uncap it. Other than that, leave it alone.
If the EU wants to remove the limit, NVMax is the premier tool for doing it despite what less informed posters may tell you.
There's absolutly NO RISK to your system until you start trying to overclock you card. All it does is set flags already available in the Detonator driver.
Ben
IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Tiberian Merchandise!!!! | GameShot ]
[edited by - Jim Adams on October 21, 2002 4:47:36 PM]
Yep. Not everyone is a big fan of tearing. The only reason you should ever uncap your framerate is for testing purposes. If you want to know how fast your app is really running you have to uncap it. Other than that, leave it alone.
If the EU wants to remove the limit, NVMax is the premier tool for doing it despite what less informed posters may tell you.
There's absolutly NO RISK to your system until you start trying to overclock you card. All it does is set flags already available in the Detonator driver.
Ben
IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Tiberian Merchandise!!!! | GameShot ]
[edited by - Jim Adams on October 21, 2002 4:47:36 PM]
Anyway, if you check for frame rate support, is it still dangerous Darrell? I have never heard this, though I guess its just as dangerous as setting your monitor to a width or height that is unsupported. Do you recommend a better method?
¬_¬
[edited by - Fuzztrek on October 17, 2002 9:07:44 PM]
[edited by - Jim Adams on October 21, 2002 4:49:10 PM]
¬_¬
[edited by - Fuzztrek on October 17, 2002 9:07:44 PM]
[edited by - Jim Adams on October 21, 2002 4:49:10 PM]
quote:Original post by Darrell L
You should never set the refresh rate in your app unless a) you''re just playing around and do not plan on distributing, or b) you know how to set it correctly, based upon the actual card/monitor settings.
XFree configuration file says that seting the refresh rate manually is pretty dangerous. I will follow this advice. Any way, when I try to set the refresh manually on my computer the app crashes. Thank you Darrell.
quote:Original post by Fuzztrek
Hmm.. I looked through your code and I can''t really see what would be causing it to hang.
My app doesn''t hang, it only runs on a slow frame rate on my system. It only hangs when I set the refresh rate to 85hz. You should consider Darrell''s advice.
-o-o-o-o-o-o-o---o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o
I repeat:
Is there any other tweak I can do before I start optimizing my code?
Wich performance you think my system is capable of in 640x480x32?
Remember that I''m doing alpha with a pretty large texture.
I''m running on a:
Pentium Celleron 466
Mother Soyo 6BA+
196MB RAM
Riva TNT2 64MB
Here is a screenshot:
"seting the refresh rate manually is pretty dangerous."
Yup. Turning off vsync isn't the same as changing the refresh rate. If a monitor only supports 60Hz and you force it to 85Hz it'll either start smoking or if you're lucky, turn off. Most new monitors have hardware checks in place to prevent you from making it go too fast. Some drivers will also check with the monitor before allowing you to set the refresh rate to prevent you from damaging the monitor.
Turning off vsync in fullscreen mode is no more dangerous than running your app in a window.
"Is there any other tweak I can do before I start optimizing my code?"
No. Turning off VSync is the only tweak you need before you start optimizing. Upping your refresh rate only increases the max frame rate it will display. It doesn't fix your problem.
Getting rid of VSync removes the limit completely as though the program were running in a window. DirectDraw supported this natively with a simple flag when you flipped the surface. I don't know why D3D doesn't have it. Maybe it does but I've never seen it.
"Pentium Celleron 466
Mother Soyo 6BA+
196MB RAM
Riva TNT2 64MB"
80FPS is probably lower than you should be able to get. I have an ATI Rage 8MB in my 400Mhz 64MB Ram laptop and my app hits 60FPS no problem. That may even be the refresh rate cap stopping it.
If you could get it to 150, that's great but really, unless it drops below 30FPS you're not going to have anyone complaining.
Ben
IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Tiberian Merchandise!!!! | GameShot ]
[edited by - KalvinB on October 17, 2002 9:29:43 PM]
[edited by - Jim Adams on October 21, 2002 4:49:51 PM]
Yup. Turning off vsync isn't the same as changing the refresh rate. If a monitor only supports 60Hz and you force it to 85Hz it'll either start smoking or if you're lucky, turn off. Most new monitors have hardware checks in place to prevent you from making it go too fast. Some drivers will also check with the monitor before allowing you to set the refresh rate to prevent you from damaging the monitor.
Turning off vsync in fullscreen mode is no more dangerous than running your app in a window.
"Is there any other tweak I can do before I start optimizing my code?"
No. Turning off VSync is the only tweak you need before you start optimizing. Upping your refresh rate only increases the max frame rate it will display. It doesn't fix your problem.
Getting rid of VSync removes the limit completely as though the program were running in a window. DirectDraw supported this natively with a simple flag when you flipped the surface. I don't know why D3D doesn't have it. Maybe it does but I've never seen it.
"Pentium Celleron 466
Mother Soyo 6BA+
196MB RAM
Riva TNT2 64MB"
80FPS is probably lower than you should be able to get. I have an ATI Rage 8MB in my 400Mhz 64MB Ram laptop and my app hits 60FPS no problem. That may even be the refresh rate cap stopping it.
If you could get it to 150, that's great but really, unless it drops below 30FPS you're not going to have anyone complaining.
Ben
IcarusIndie.com [ The Rabbit Hole | The Labyrinth | DevZone | Gang Wars | The Wall | Hosting | Tiberian Merchandise!!!! | GameShot ]
[edited by - KalvinB on October 17, 2002 9:29:43 PM]
[edited by - Jim Adams on October 21, 2002 4:49:51 PM]
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement