Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

1

11.10.2009, 17:23

XNA: Schwarzes Dreieck

Hi, ich hab n problem: ich will mit xna ein dreick, das sich um die y-achse dreht machen.
Nun, 1. das Dreieck bleibt schwarz(?) und zweitens verschwindet es immer zwischendurch mal wieder(??).

Nun, hier der Code:

Konstruktor der Game-Klasse

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        public GDreieck(bool bFullscreen)
            : base()
        {
            graphics = new GraphicsDeviceManager(this);

            // Fenster- bzw. Vollbildmodus...
            graphics.IsFullScreen = bFullscreen;
            this.IsFixedTimeStep = true;
            
            Content.RootDirectory = "Content";
            Triangle = new CTriangle(new VertexPositionColor[]
            {new VertexPositionColor(new Vector3(-1.0f,-1.0f,1.0f),new Color(0xFF,0,0)),
             new VertexPositionColor(new Vector3(1.0f,-1.0f,1.0f),new Color(0,0xFF,0)),
             new VertexPositionColor(new Vector3(0.0f,1.0f,1.0f), new Color(0,0,0xFF))
            });
        }

CTriangle ist ne klasse die drei vertizes enthält.

Hier meine Initialize-Methode:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
            GraphicsDevice.VertexDeclaration = new VertexDeclaration(GraphicsDevice, VertexPositionColor.VertexElements);

            fxbasic = new BasicEffect(GraphicsDevice, null);
              
            fxbasic.FogEnabled = false;

            fxbasic.AmbientLightColor = Vector3.Zero;
            fxbasic.DiffuseColor = Vector3.Zero;
            fxbasic.EmissiveColor = Vector3.Zero;
            
            fxbasic.VertexColorEnabled = true;

            fxbasic.LightingEnabled = false;
            fxbasic.PreferPerPixelLighting = false;
            fxbasic.EnableDefaultLighting();

            fxbasic.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(90.0f), GraphicsDevice.DisplayMode.AspectRatio, 0.00000001f, 100.0f);

            fxbasic.View = Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, -10.0f), Vector3.Zero, Vector3.Up);

            fxbasic.World = Matrix.CreateRotationY(MathHelper.ToRadians(1));
            base.Initialize();


Meine Update-Methode

Quellcode

1
2
3
4
5
6
7
8
9
10
        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState(PlayerIndex.One).IsKeyDown(Keys.Escape))
                this.Exit();

                       fxbasic.World *= Matrix.CreateRotationY(MathHelper.ToRadians(45.0f * (float)gameTime.ElapsedRealTime.TotalSeconds));

            base.Update(gameTime);
        }


Die Draw-Methode:

Quellcode

1
2
3
4
5
6
7
8
9
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.Blue);

            // Dreieck rendern
            Triangle.Render(GraphicsDevice, fxbasic);

            base.Draw(gameTime);
        }


Hier CTriangle.Render

Quellcode

1
2
3
4
5
6
7
8
9
10
11
        public void Render(GraphicsDevice graphics, Effect fx)
        {
            fx.Begin();
            foreach (EffectPass pass in fx.CurrentTechnique.Passes)
            {
                pass.Begin();
                graphics.DrawUserPrimitives<VertexPositionColor>(PrimitiveType.TriangleStrip, _Vertices, 0, 1);
                pass.End();
            }
            fx.End();
        }


Hoffe jemand kann mir helfen...

mfg C--
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

2

13.10.2009, 21:18

Keiner ne idee? :(
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

3

14.10.2009, 00:17

Nun wie schaut es denn aus, wenn du die Rotation weglässt? Hast du dann ein sichtbares, normales Dreieck oder funktioniert das auch schon nicht?

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

4

14.10.2009, 09:32

Wenn ich die Rotation weglasse, hab ich ein sichtabares schwarzes dreieck.
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

Crush

Alter Hase

Beiträge: 383

Wohnort: Stuttgart

Beruf: Softwareentwickler

  • Private Nachricht senden

5

14.10.2009, 13:24

Probiere mal unterschiedliche Axen beim Rotieren aus. Zeichne das Dreieck mal beidseitig. Was passiert?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

6

14.10.2009, 13:44

setz doch mal Diffuse auf (1,1,1,1). oder Ambient auf (1,1,1,1) und schau ob sich was ändert^^

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

7

14.10.2009, 22:09

Zitat von »"TrommlBomml"«

setz doch mal Diffuse auf (1,1,1,1). oder Ambient auf (1,1,1,1) und schau ob sich was ändert^^


Vielen Dank! :D :D

Wenn ich Ambient, Diffuse und Emissive auf 1,1,1 setz, funzt es mit den farben! :D :D
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

8

14.10.2009, 22:17

Mist(eriös), jetzt dreht sich das dreieck gar nicht mehr und der Debugger überspringt diese Zeile immer :shock: :

Quellcode

1
            fxbasic.World *= Matrix.CreateRotationY(MathHelper.ToRadians(45.0f * (float)gameTime.ElapsedRealTime.TotalSeconds));
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

Werbeanzeige