Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Lite allt möjligt faktiskt

Postades av 2005-10-05 22:48:47 - Rasmus Ågren, i forum managed directX, Tråden har 15 Kommentarer och lästs av 2212 personer

Hej!
Jag har precis börjat titta på managed dx i c# och undrar över hur jag skall få till 2d som jag vill. Jag har läst i nån tutorial att sprites är bra och det är det jag använder nu. Jag har två olika sätt att läsa in bilden:
<code>
tempTexture=new Texture(device, new Bitmap(this.GetType(), "bak800.bmp"), 0, Pool.Managed);
tempTexture = TextureLoader.FromFile(device, @"c:\bak800.bmp");
</code>

I det första fallet har jag importerat filen till programmet. Problemet där är att jag inte får alfa blend att funka trots att jag skrivit sprite.Begin(SpriteFlags.AlphaBlend).

Det funkar däremot om jag använder den andra metoden, men då blir istället bilden förstorad och ser ful ut. Jag använder

<code>
using (Surface s = tempTexture.GetSurfaceLevel(0))
{
SurfaceDescription desc = s.Description;
tempRectangle = new Rectangle(0, 0, desc.Width, desc.Height);
}
</code>

för att få fram storleken på bilden.

Jag förstår om jag är lite oklar men det är för att jag inte fattar så mycket. Försök gärna hjälpa ändå!


Svara

Sv: Lite allt möjligt faktiskt

Postades av 2005-10-05 23:01:42 - Rasmus Ågren

nu har jag kikat lite till och det verkar som att den alltid avrundar storleken upp till närmaste potens av 2 (om jag använder den andra metoden). Kan det ha något med det hela att göra?


Svara

Sv:Lite allt möjligt faktiskt

Postades av 2005-10-06 12:03:24 - Rasmus Ågren

Det ska nog tilläggas att jag i det första fallet har lagt till filen som en resurs i projektet. Det är dessutom den lösningen jag helst vill använda.


Svara

Sv: Lite allt möjligt faktiskt

Postades av 2005-10-09 23:02:59 - Johan Lindfors

Kan du prova en annan konstruktor för Texture(...). Det finns en konstruktor som också ger dig möjligheten att specificera formatet på texturen, ett format med Alfa-kanal är att rekommendera.

Har inte kunnat testa detta, men ska försöka under veckan. Alternativt titta i oktober SDK för DirectX, där finns ett 2D-exempel skapat med Direct3D som är ganska tydligt.

Mvh

Johan Lindfors


Svara

Sv: Lite allt möjligt faktiskt

Postades av 2005-10-10 07:48:37 - Johan Lindfors

Har nu provat lite och för mig fungerar det klockrent med en "embedded resource" och Alpha Blending. Om du vill så kan du skicka kod som inte fungerar till mig så kan jag titta på det!

johan.lindfors@microsoft.com

Mvh

Johan


Svara

Sv:Lite allt möjligt faktiskt

Postades av 2005-10-10 23:17:48 - Rasmus Ågren

Tack för att du försöker hjälpa mig. Tyvärr har jag lyckat trasslat till det ännu värre och nu visas inga sprites alls. Här är min kod ihopklippt från lite här och var:

<code>
static void Main()
{
Form1 frm=new Form1();
frm.Show();
frm.game=new Game(frm);
Application.Run(frm);
}
public Game(Form form)
{
//Creates the InformationPresenter
informationPresenter=new InformationPresenter(form);

//Initializes the graphic engine
informationPresenter.initializeGraphics();
}


public InformationPresenter(Form formToDrawOn)
{
form=formToDrawOn;

initializeGraphics(); //Initializes the device and sets light and camera

//Initializes all sprites and textures needed for the 2D graphics
initialize2DSprites();
}

public void initializeGraphics()
{
// Set the presentation parameters
PresentParameters presentParams = new PresentParameters();

presentParams.Windowed = true; //Run in window
presentParams.SwapEffect = SwapEffect.Discard;

// Create the device
device = new Device(0, DeviceType.Hardware, form,
CreateFlags.SoftwareVertexProcessing, presentParams);

//Positions the camera
positionCamera((float)Math.PI / 4,form.Width / form.Height, 1.0f, 10.0f, new Vector3(0,0, 5.0f), new Vector3(0,0,0), new Vector3(0,1,0));

//Don't use lightning
device.RenderState.Lighting=false;
}


private void initialize2DSprites()
{
//Sets the Sprite object
sprite=new Sprite(device);

//Only for clearity
Texture tempTexture;
Rectangle tempRectangle;

//Initializes the sprites and textures needed for the background

tempTexture=new Texture(device, new Bitmap(this.GetType(), "bak800.bmp"), 0, Pool.Managed);


using (Surface s = tempTexture.GetSurfaceLevel(0))
{
SurfaceDescription desc = s.Description;
tempRectangle = new Rectangle(0, 0, desc.Width, desc.Height);
}

spritesArray.Add(sparar texturen med storlek och sånt)
}

Den här kallas på hela tiden:

public void draw()
{
device.Clear(ClearFlags.Target, System.Drawing.Color.Wheat, 1.0f, 0);

//Position the camera
positionCamera((float)Math.PI / 4,form.Width / form.Height, 1.0f, 100.0f, new Vector3(0,0, 20.0f), new Vector3(), new Vector3(0,1,0));

device.BeginScene();

//********Start 2D drawing

// Begin drawing sprites with alpha blend
sprite.Begin(SpriteFlags.None);

sprite.Draw(texturen hämtas in,rektangel med en viss storlek,new Vector3(0,0,0),new Vector3(0,0,0),Color.White);
// Notify Direct3D we are done drawing sprites
sprite.End();

//********End 2D drawing

device.EndScene();

device.Present();
}
</code>

Ok, det där blev ju väldigt otydligt. Jag hoppas att någon som förstår det här snabbt kan se var jag gjort fel. Annars är det bara att fråga. Tack få förhand!


Svara

Sv: Lite allt möjligt faktiskt

Postades av 2005-10-10 23:21:16 - Rasmus Ågren

Jag kanske skall säga att det som händer när jag kör programmet är att formen får färgen System.Drawing.Color.Wheat. Om jag importerar en stor fil hackar det mer så det verkar som om filen läses in, men det visas som sagt ingenting. Det funkade ju (lite) innan så mitt system borde vara ok.


Svara

Sv:Lite allt möjligt faktiskt

Postades av 2005-10-11 07:49:25 - Johan Lindfors

Prova att lägga dessa rader direkt mellan sprite.Begin(....) och sprite.End()

<code>device.RenderState.AlphaBlendEnable = true;
device.RenderState.SourceBlend = Blend.One;
device.RenderState.DestinationBlend = Blend.One;

...
sprite.Draw(...)
...

device.RenderState.AlphaBlendEnable = false;
</code>


Svara

Sv: Lite allt möjligt faktiskt

Postades av 2005-10-11 09:05:44 - Rasmus Ågren

Det blir ingen skillnad, det visas fortfarande ingenting. Kan det vara något med kameran eller ljuset? Det ska väl inte spela roll när det gäller sprites?


Svara

Sv:Lite allt möjligt faktiskt

Postades av 2005-10-11 10:32:57 - Johan Lindfors

Så här ser mitt anrop till sprite.Draw ut...

<code>
sprite.Draw(tex, Rectangle.Empty, new Vector3(0,0,1),new Vector3(100,100,0), Color.White.ToArgb());
</code>

Har märkt att när jag anger Vector3(0,0,0) alltså ett z-värde på 0, så ritas inte spriten ut, vet inte riktigt varför, men kan det vara det som spökar för dig?


Svara

Sv: Lite allt möjligt faktiskt

Postades av 2005-10-11 13:01:31 - Niklas Jansson

Här kommer jag och har nästan ingen aning om vad ni pratar om, men jag kanske har en förklaring till z=0-problemet.
Det är i så fall bara det främre clip-planet som du hamnar innanför...


Svara

Sv: Lite allt möjligt faktiskt

Postades av 2005-10-11 19:37:32 - Rasmus Ågren

Jag har testat med det men det verkar inte funka. Är det något speciellt man skall tänka på när det gäller bitmapen. Det konstiga är bara att det funkade innan!


Svara

Sv:Lite allt möjligt faktiskt

Postades av 2005-10-11 19:48:44 - Johan Lindfors

Det blir lite omständigt att hjälpa till så här, det bästa vore om du skickade mig hela koden så att jag kan köra det själv och felsöka!

johan.lindfors@microsoft.com

Mvh

Johan


Svara

Sv: Lite allt möjligt faktiskt

Postades av 2005-10-11 22:03:04 - Rasmus Ågren

Hej! Problemet visade sig vara att jag skapade Devicen två gånger och den ena gången utan PresentParameters. Tack så jättemycket ni som försökte hjälpa mig!


Svara

Sv:Lite allt möjligt faktiskt

Postades av 2005-10-11 23:14:42 - Rasmus Ågren

Nu blev jag så glad att jag glömde säga hur det blev med mina ursprungliga problem. Om jag laddar filen såhär blir det inga problem med storleken:

<code>
tempTexture = TextureLoader.FromFile(device, @"c:\bak801.bmp",0,0,0,0,Format.Unknown,Pool.Managed,Filter.None,Filter.None,0);
</code>

och för att använda alfalager var jag tvungen att spara bilden med antingen 16 eller 34 bitar. Skumt, men ok!


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
915
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies