none
我想用xna画个矩形没成功,贴出代码期望得到帮助。 RRS feed

  • 问题

  • 现在不报错,但看不东西(窗口只是原始状态)
    project discovery developer
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Audio;
    using Microsoft.Xna.Framework.Content;
    using Microsoft.Xna.Framework.GamerServices;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    using Microsoft.Xna.Framework.Media;
    
    namespace WindowsGame2 {
      /// <summary>
      /// This is the main type for your game
      /// </summary>
      public class Game1 : Microsoft.Xna.Framework.Game {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
    
        public Game1() {
          graphics = new GraphicsDeviceManager(this);
          Content.RootDirectory = "Content";
        }
    
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content. Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize() {
          // TODO: Add your initialization logic here
          this.be = new BasicEffect(this.GraphicsDevice);
          vpcs = new VertexPositionColor[] { 
            new VertexPositionColor(new Vector3(1f,1f,0f),Color.Red),
            new VertexPositionColor(new Vector3(1f,-1f,0f),Color.Red),
            new VertexPositionColor(new Vector3(-1f,-1f,0f),Color.Red),
            new VertexPositionColor(new Vector3(-1f,1f,0f),Color.Red)
          };
          this.indeics = new ushort[] { 
            0,1,0,3,2,1,2,3
          };
          this.ib = new IndexBuffer(this.GraphicsDevice,IndexElementSize.SixteenBits,this.indeics.Count(),BufferUsage.None);
          this.be.GraphicsDevice.Indices = this.ib;
          VertexBuffer vb=new VertexBuffer(this.GraphicsDevice,typeof(VertexPositionColor),this.vpcs.Count(),BufferUsage.None);
          vb.SetData(this.vpcs);
          this.be.GraphicsDevice.SetVertexBuffer(vb);
          base.Initialize();
        }
        IndexBuffer ib;
        ushort[] indeics;
        VertexPositionColor[] vpcs;
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent() {
          // Create a new SpriteBatch, which can be used to draw textures.
          spriteBatch = new SpriteBatch(GraphicsDevice);
    
          // TODO: use this.Content to load your game content here
        }
    
        /// <summary>
        /// UnloadContent will be called once per game and is the place to unload
        /// all content.
        /// </summary>
        protected override void UnloadContent() {
          // TODO: Unload any non ContentManager content here
        }
    
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime) {
          // Allows the game to exit
          if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            this.Exit();
    
          // TODO: Add your update logic here
    
          base.Update(gameTime);
        }
        BasicEffect be;
        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime) {
          GraphicsDevice.Clear(Color.CornflowerBlue);
    
          Matrix world;
          Vector3 position = new Vector3(0.0f,0.0f,1.0f);
          Vector3 forward = Vector3.Forward;
          Vector3 up = Vector3.Up;
          Matrix.CreateWorld(ref position,ref forward,ref up,out world);
          this.be.World = world;
          this.be.View = Matrix.CreateLookAt(new Vector3(0,0,8.2f),Vector3.Zero,Vector3.Up);
          this.be.Projection = Matrix.CreatePerspectiveFieldOfView(1f,this.GraphicsDevice.Viewport.AspectRatio,1,10);
          this.be.CurrentTechnique.Passes[0].Apply();
          this.be.GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.LineList,
            0,0,this.vpcs.Count(),0,this.indeics.Count());
          // TODO: Add your drawing code here
    
          base.Draw(gameTime);
        }
      }
    2011年1月8日 10:20

答案