🔒 Locked
caps
Advertisement
Original Post
Im making this game on my old laptop and I checked the caps. It gave a limit of 256^2 for the number of primitives, and 0 for the number of active lights. Im not sure what exactly these mean tho. Is 256^2 the maximum number of triangles I can render in a single frame? or just in one call to drawPrimitive? and when 0 is the max number of lights, is it impossible to use lighting?? Its not like using software to calculate lighting is that hard, Ive done it myself. Does directX not support lighting if hardware doesnt??
Quote:
Original post by michael879
Im making this game on my old laptop and I checked the caps. It gave a limit of 256^2 for the number of primitives, and 0 for the number of active lights. Im not sure what exactly these mean tho. Is 256^2 the maximum number of triangles I can render in a single frame? or just in one call to drawPrimitive?
I believe that this is in one Draw*() call.
Quote:
and when 0 is the max number of lights, is it impossible to use lighting?? Its not like using software to calculate lighting is that hard, Ive done it myself. Does directX not support lighting if hardware doesnt??
Yea, this means that your hardware doesn't support lighting at all. You may want to try creating the device with software vertex processing - that may or may not allow you to use lights.
yea I know the hardware doesnt support lighting, but shouldnt directX?? It seems weird that just because your computer doesnt support lighting you cant write a program that has it. And Im sure Ive played games on this computer that had lighting.
If you create your device with D3DCREATE_SOFTWARE_VERTEXPROCESSING then you should have access to lighting. I would interpret what you're seeing as a lack of hardware transform and lighting (you could check the DevCaps for DEVCAPS_HWTRANSFORMANDLIGHT to check).
Just out of curiosity - what's the hardware? and old Voodoo 3 or something [smile]
Jack
Just out of curiosity - what's the hardware? and old Voodoo 3 or something [smile]
Jack
The number of primitives is the maximum number of primitives in one DrawPrimitive call. A primitive is a point, line, or triangle.
Quote:
From MSDN
MaxPrimitiveCount
Maximum number of primitives for each DrawPrimitive call. There are two cases:
- If MaxPrimitiveCount is not equal to 0xffff, you can draw at most MaxPrimitiveCount primitives with each draw call.
- However, if MaxPrimitiveCount equals 0xffff, you can still draw at most MaxPrimitiveCount primitive, but you may also use no more than MaxPrimitiveCount unique vertices (since each primitive can potentially use three different vertices).
my video card is a rage mobility-M1. How do I create the device with software processing? Im using the common files for my application. Will I need to drop that to do this?
Quote:
Original post by michael879
my video card is a rage mobility-M1. How do I create the device with software processing? Im using the common files for my application. Will I need to drop that to do this?
It's really easy - all you need to do is call CreateDevice() with the D3DCREATE_SOFTWARE_VERTEXPROCESSING behavior flag.
I'm pretty sure when it says 0 lights, it means infinite. Software processing, which you'll be using on that card, can use any number of lights. Also, I don't think there is a single hardware implementation that supports less than 8 lights.
Quote:
Original post by Namethatnobodyelsetook
I'm pretty sure when it says 0 lights, it means infinite. Software processing, which you'll be using on that card, can use any number of lights.
-1 means infinite lights - for example, REF has -1.
Quote:
Also, I don't think there is a single hardware implementation that supports less than 8 lights.
There are many old cards that don't support lights - Voodoo3s, S3 Virges, ect. Also, the newer Intel imbedded cards don't either (i815, i915). However, there aren't any newer cards that support more than 8.
Quote:
Original post by circlesoft Quote:
Original post by Namethatnobodyelsetook
I'm pretty sure when it says 0 lights, it means infinite. Software processing, which you'll be using on that card, can use any number of lights.
-1 means infinite lights - for example, REF has -1.Quote:
Also, I don't think there is a single hardware implementation that supports less than 8 lights.
There are many old cards that don't support lights - Voodoo3s, S3 Virges, ect. Also, the newer Intel imbedded cards don't either (i815, i915). However, there aren't any newer cards that support more than 8.
I've run into this before. While the docs say -1 means infinite (actually, it seems they removed that line from the docs. It says nothing about 0 or -1 in the June05 SDK when searching for MaxActiveLights), some drivers, and/or software transform mode, use a value of 0.
The older cards you mention don't have HWT&L. You cannot make a hardware vertex processing device on them. They will require a software mode device. The SDK clearly says that software processing has infinite lights (DirectX Graphics/Programming Guide/Getting Started/Direct3D Devices/Processing Vertex Data). The first card to support HWT&L was the GeForce256, with support for 8 lights. I'm pretty sure every card with HWT&L has also supported 8 lights.
Quote:
Original post by Namethatnobodyelsetook
I've run into this before. While the docs say -1 means infinite (actually, it seems they removed that line from the docs. It says nothing about 0 or -1 in the June05 SDK when searching for MaxActiveLights), some drivers, and/or software transform mode, use a value of 0.
Yay!
Quote:
The first card to support HWT&L was the GeForce256, with support for 8 lights. I'm pretty sure every card with HWT&L has also supported 8 lights.
Yea, now that I think about it, even my incredible GF4mx supported 8 lights. IIRC, the FFP takes a 1-light-per-pass approach, so I guess it wouldn't be much to do it on all of those older cards.
the thing is, Im using the common app class which creates the device for me. Is there a way to use software processing and still use CD3DApplication?
Quote:
Original post by michael879
the thing is, Im using the common app class which creates the device for me. Is there a way to use software processing and still use CD3DApplication?
(1) Look for some member function that changes it
(2) All of the source files for that framework are included in every project that you make. So just edit it manually.
o right... duh... thanks lol Im having sleep problems, cant think straight :-p
Topic Locked
This topic has been locked by a moderator. New replies are not allowed.
Sign in to reply to this topic.
Advertisement