Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Advance way to warpper the vertex buffer (vertex element) in XNA?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
No replies to this topic

#1 ownsun   Members   -  Reputation: 108

Like
0Likes
Like

Posted 14 January 2013 - 05:47 AM

 
   I am currently doing sth to warp the VB and IB so that I could load some other model formats such as .mesh in Ogre.
    Some of formats may use different VT_Sementics such as Normal \ Tangent and sth else, so I am trying to determin my vertex declartion type dynamicly when read the formats, so I just add a basic interface : IVertexType(I am using XNA 3.1 and this interface is just does the same thing with XNA 4.1 does), and I would dynamicly choose the typical vertex type on the way.
 
    But what really matters is , I need to update and set the VB and IB  to the device, I had to iterate all the vertex data maybe VertexPositionNormalColor[] array, and need to check if a specific element exists.  
 Just like what I am current doing:
 
    Vector3 position = (Vector3)originVertexData.GetValueByElementName("position");
     public object GetValueByElementName(String name)
        {
            switch (name)
            {
                case "position":
                    return mPosition;
                case "normal":
                    return mNormal;
                case "texcoord":
                    return mTexcoord;
                case "tangent":
                    return mTagent;
                case "color":
                    return mColor;
            }
            return null;
        }
 
 
        public void SetValueByElementName(String name, object value)
        {
            switch (name)
            {
                case "position":
                    Vector3 position = (Vector3)value;
                    mPosition = position;
                    break;
                case "color":
                    Color color = (Color)value;
                    mColor = color;
                    break;
                case "normal":
                    Vector3 normal = (Vector3)value;
                    mNormal = normal;
                    break;
                case "texcoord":
                    Vector2 texcoord = (Vector2)value;
                    mTexcoord = texcoord;
                    break;
                case "tangent":
                    Vector3 tangent = (Vector3)value;
                    mTagent = tangent;
                    break;
            }
        }
 
    Vector3 transformedPos = new Vector3(x, y, z);
    targetVertexData.SetValueByElementName("position", transformedPos);  // then apply the bone transform.
 
 
////////////////
 
 As you can see up there, there are lot of boxing and unboxing operation, and it's ok when the buffer require lessupdate, but it's a disaster when an animation are applied to the vertex buffer(software animation). So I am wondering if anyone could tell me a better way to do this?
 


Sponsor:



Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS