Materials in DX8 |
Sr. Guapo | Hello again...
OK, I am currently designing a game based in outer space. I found it neccesary to create a particle system to represent the stars... However, when I render the stars, they are alway a light blue color, as opposed to white. I discovered this was because the previous object I rendered had a blue material. My question is, how do you "unset" a material, because I cannot for the life of me figure it out.
PS - I have also tried creating a white material, but I get errors when I do that... |
ardman | Can you not post the code of when you're rendering the objects? |
Sr. Guapo | Sure
[code]
D3DDevice.BeginScene
'Draw The Stars
D3DDevice.SetVertexShader FVF_PARTICLEVERTEX
D3DDevice.SetRenderState D3DRS_ALPHABLENDENABLE, 1
D3DDevice.SetRenderState D3DRS_ZWRITEENABLE, 0
D3DDevice.SetTexture 0, StarTexture
D3DDevice.SetTransform D3DTS_WORLD, matStars
D3DDevice.DrawPrimitiveUP D3DPT_POINTLIST, NumOfStars, _
StarVertexList(0), Len(StarVertexList(0))
D3DDevice.SetRenderState D3DRS_ZWRITEENABLE, 1
D3DDevice.SetRenderState D3DRS_LIGHTING, True
'Mesh
D3DDevice.SetTransform D3DTS_WORLD, matShip
For I = 0 To nMaterials - 1
'//Setup the renderer for this part of the mesh
D3DDevice.SetMaterial MeshMaterials(I)
D3DDevice.SetTexture 0, MeshTextures(I)
'//Draw the current part of the mesh
Mesh.DrawSubset I
Next I
D3DDevice.SetTransform D3DTS_WORLD, matWorld
...
[/code]
Hope that helps... |
VBBR | What's the code for creating the white material? |
Sr. Guapo | Well I know it was wrong... I can't figure out how to set the ambient/diffuse/emissive/power/specular properties. I tries RGB, Hex codes, even the native vb Colors (vbWhite...). I got an error saying "type mismatch" at the line where I tried to set them... I don't think you can just do
[code]
BlankMaterial.ambient = &HFFFFFF
[/code]
or whatever... Is there a special function in the D3DX library[?] |
Sr. Guapo | Oh yeah... I have also tried
[code]
D3DDevice.setMaterial Nothing
[/code]
but that did not work either, I got a "ByRef Type Mismath" or something to that effect... |
masterbooda | Have you tried D3DColorARGB(Alpha, Red, Green, Blue)... this is what I use to set up colors in DirectX8, it has worked in every situation I've run in to... but there are exceptions..
DaBooda out... |
masterbooda | One more thing, did anybody else get that error when entering vbgamer, I have noticed that it stopped when I wrote this last comment, I am wondering if the code snippets are causing that, because all the forum posts have those little tooltips... maybe it was just me...
DaBooda Out... |
VBBR | Hum... what error? |
VBBR | Oh found it. You need to pass a "D3DCOLORVALUE" type. So define a variable of this type and define the a,r,g,b components separately. |
Sr. Guapo | I am getting the error too... It is getting really annoying... "Unterminated String Constant, do you wish to debug?" or something. I hate VS .NET, every time I hit an error on a page, it has to ask if I want to debug it...
Back to the topic: When VB gives me the error, it actually highlights the "ambient" (or whatever) parameter. I just don't think you are allowed to directly set the value.
I implemented a *VERY* low tech solution... I made another material (completely white) when I made the object (in Milkshape3D), then, through trial and error, found its index and set that immediatly before rendering the stars. It seems to work, though nobody else could understand the code... |
Sr. Guapo | OK, just saw your second comment VBBR... yup, I think that did it... thanks [:D] |