Har äntligen haft tid att sätta mig med Direct3D och C#, men har sprungit in i lite problem.. Jag skulle chansa på att det har något med dina texturer att göra, har bollarna också texturer, eller bara material, isåfall kan du behöva sätta SetTexture(0,null) eller hur det nu ska vara... Hej Johan. Använder du samma VertexFormat till både bakgrund och bollar? Arbetar aldrig med Vertexer när jag ritar bollarna.. Bollarna är helt enkelt instanser av: Men du använder vertices när du ritar bakgrunden? Jovisst gör jag det.. Nybörjare managed DirectX
Pysslar med ett enkelt bollspel. Utgår än så länge ifrån de "Common files" som följde med Dx9SDK'n. Spelet innehåller 2 bollar (Spheremesh) och 1 bakgrund. bakgrunden försöker jag rita upp med hjälp av vertexer som jag lägger en textur på. Utgår i det fallet från koden i senaste DirectX-filmen från msdnTV. Dock blir ngt galet.. Om jag låter bli att visa bollarna så visas min bakgrund, men om jag försöker visa allt samtidigt så försvinner bakgrunden..
Min renderingskod är följande:
<code>
device.Clear(ClearFlags.Target | ClearFlags.ZBuffer,0x000000ff,1.0f, 0);
device.BeginScene();
Matrix matWorld;
device.Lights[0].Enabled = false;
device.Lights[1].Enabled = true;
matWorld = Matrix.Translation(myTBalls[0].X, myTBalls[0].Y, 0.0f);
device.SetTransform(TransformType.World, matWorld);
sphereMesh[0].DrawSubset(0);
matWorld = Matrix.Translation(myTBalls[1].X, myTBalls[1].Y, 0.0f);
device.SetTransform(TransformType.World, matWorld);
sphereMesh[1].DrawSubset(0);
drawingFont.DrawText(2, 1, System.Drawing.Color.Yellow, "myTBalls[0].X:" + myTBalls[0].X.ToString());
drawingFont.DrawText(2, 20, System.Drawing.Color.Yellow, "myTBalls[0].Y:" + myTBalls[0].Y.ToString());
device.SetStreamSource(0, vBuffer, 0);
device.SetTexture(0, tex);
device.DrawPrimitives(PrimitiveType.TriangleFan, 0, 2);
device.EndScene();
</code>
Vet inte om jag är inne på rätt spår; Att det är såhär jag ska gå tillväga för att visa det jag vill, men det är en start iaf..
Tacksam för hjälp.
/Benny Sv: Nybörjare managed DirectX
Jag har inte hunnit testa din kod, men har haft liknande problem som löstes med detta!
MvhSv: Nybörjare managed DirectX
Tack för ditt svar, och tack för en bra utveckling av den svenska MSDN sidan!
När jag körde den första koden och försökte visa allt (dvs då endast bollarna syntes) så fick bollarna den texturen som jag försöker sätta på vertexerna.
Testade att nollställa texturerna (device.SetTextures(0, null);) innan bollarna renderas, och nu påverkas inte bollarna av texturen längre utan är vita som de ska vara. Bollarna är f.ö bara ett material som jag satt färgen Vit på.
Dock syns fortfarande inte mina vertexer om jag försöker rendera dessa samtidigt som mina sphereMeshes.
mvh
Benny Sv: Nybörjare managed DirectX
MvhSv: Nybörjare managed DirectX
sphereMesh[0] = Mesh.Sphere(device, 0.25f, 20, 20)
För att sedan rendera dom gör jag:
sphereMesh[0].DrawSubset(0);Sv: Nybörjare managed DirectX
En Mesh använder så vitt jag vet en vertexbuffer i bakgrunden, nu har jag inte koll på vilket vertexformat som den använder, men du behöver nog tänka till lite där!
MvhSv: Nybörjare managed DirectX
Det du säger låter vettigt.. Ska ta mig en kik på hur meshes fungerar.
Tack för hjälpen.
Mvh
Benny