daddis

Member
  • Content count

    1
  • Joined

  • Last visited

Community Reputation

107 Neutral

About daddis

  • Rank
    Newbie
  1. [quote name='RythBlade' timestamp='1332426733' post='4924324'] Does the SDKMesh class deal with the vertex format separately - or is it that the vertex format is embedded in the .sdkmesh file, and you have to mirror it in the code?? [/quote] This is probably way too late for your uni project... but yes. You need to mirror the vertex buffer format in code. If you use the ContentExporter tool (source available in the June 2010 SDK), you can run it with a logging level that outputs the vertex format when it creates your sdkmesh: [size=3][b]ContentExporter.exe MyModel.FBX -loglevel 4[/b][/size] This will give you some very useful output, such as: [size=3][b]Triangle list mesh: 51 verts, 270 indices, 1 subsets D3DX mesh operations increased vertex count from 51 to 53. Vertex size: 36 bytes; VB size: 1908 bytes Element 0 Stream 0 Offset 0: Position.0 Type Float3 (12 bytes) Element 1 Stream 0 Offset 12: BlendWeight.0 Type UByte4N (4 bytes) Element 2 Stream 0 Offset 16: BlendIndices.0 Type UByte (4 bytes) Element 3 Stream 0 Offset 20: Normal.0 Type Dec3N (4 bytes) Element 4 Stream 0 Offset 24: TexCoord.0 Type Float16_2 (4 bytes) Element 5 Stream 0 Offset 28: Tangent.0 Type Dec3N (4 bytes) Element 6 Stream 0 Offset 32: Binormal.0 Type Dec3N (4 bytes)[/b][/size] Which you can use to create your vertex layout in code: [size=3][b]// Create our vertex input layout const D3D11_INPUT_ELEMENT_DESC layout[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "WEIGHTS", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "BONES", 0, DXGI_FORMAT_R8G8B8A8_UINT, 0, 16, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "NORMAL", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, 20, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TEXCOORD", 0, DXGI_FORMAT_R16G16_FLOAT, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TANGENT", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, 28, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "BINORMAL", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, 32, D3D11_INPUT_PER_VERTEX_DATA, 0 }, };[/b][/size] And of course you'll need to match that in your vertex shader, too: [size=3][b]struct VSSkinnedSceneIn { float3 Pos : POSITION; //Position float4 Weights : WEIGHTS; //Bone weights uint4 Bones : BONES; //Bone indices float3 Normal : NORMAL; //Normal float2 Tex : TEXCOORD; //Texture coordinate float3 Tan : TANGENT; //Normalized Tangent vector float3 Binormal : BINORMAL; //Binormal };[/b][/size] Hope this helps someone!