This commit is contained in:
Chuck Walbourn 2016-08-22 11:24:46 -07:00
Родитель 59a60f858a
Коммит 51da949190
44 изменённых файлов: 13833 добавлений и 13833 удалений

Просмотреть файл

@ -1,392 +1,392 @@
//-------------------------------------------------------------------------------------
// DirectXMesh.h
//
// DirectX Mesh Geometry Library
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#pragma once
#include <memory>
#include <string>
#include <vector>
#include <stdint.h>
#if defined(_XBOX_ONE) && defined(_TITLE)
#include <d3d11_x.h>
#define DCOMMON_H_INCLUDED
#else
#include <d3d11_1.h>
#endif
#include <directxmath.h>
#define DIRECTX_MESH_VERSION 101
namespace DirectX
{
//---------------------------------------------------------------------------------
// DXGI Format Utilities
bool __cdecl IsValidVB( _In_ DXGI_FORMAT fmt );
bool __cdecl IsValidIB( _In_ DXGI_FORMAT fmt );
size_t __cdecl BytesPerElement( _In_ DXGI_FORMAT fmt );
//---------------------------------------------------------------------------------
// Input Layout Descriptor Utilities
bool __cdecl IsValid( _In_reads_(nDecl) const D3D11_INPUT_ELEMENT_DESC* vbDecl, _In_ size_t nDecl );
void __cdecl ComputeInputLayout( _In_reads_(nDecl) const D3D11_INPUT_ELEMENT_DESC* vbDecl, _In_ size_t nDecl,
_Out_writes_opt_(nDecl) uint32_t* offsets,
_Out_writes_opt_(D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT) uint32_t* strides );
//---------------------------------------------------------------------------------
// Attribute Utilities
std::vector<std::pair<size_t,size_t>> __cdecl ComputeSubsets( _In_reads_opt_(nFaces) const uint32_t* attributes, _In_ size_t nFaces );
// Returns a list of face offset,counts for attribute groups
//---------------------------------------------------------------------------------
// Mesh Optimization Utilities
void __cdecl ComputeVertexCacheMissRate( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces, _In_ size_t nVerts,
_In_ size_t cacheSize, _Out_ float& acmr, _Out_ float& atvr );
void __cdecl ComputeVertexCacheMissRate( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces, _In_ size_t nVerts,
_In_ size_t cacheSize, _Out_ float& acmr, _Out_ float& atvr );
// Compute the average cache miss ratio and average triangle vertex reuse for the post-transform vertex cache
//---------------------------------------------------------------------------------
// Vertex Buffer Reader/Writer
class VBReader
{
public:
VBReader();
VBReader(VBReader&& moveFrom);
VBReader& operator= (VBReader&& moveFrom);
VBReader(VBReader const&) = delete;
VBReader& operator= (VBReader const&) = delete;
~VBReader();
HRESULT __cdecl Initialize( _In_reads_(nDecl) const D3D11_INPUT_ELEMENT_DESC* vbDecl, _In_ size_t nDecl );
// Does not support VB decls with D3D11_INPUT_PER_INSTANCE_DATA
HRESULT __cdecl AddStream( _In_reads_bytes_(stride*nVerts) const void* vb, _In_ size_t nVerts, _In_ size_t inputSlot, _In_ size_t stride = 0 );
// Add vertex buffer to reader
HRESULT __cdecl Read( _Out_writes_(count) XMVECTOR* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
// Extracts data elements from vertex buffer
HRESULT __cdecl Read( _Out_writes_(count) float* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Read( _Out_writes_(count) XMFLOAT2* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Read( _Out_writes_(count) XMFLOAT3* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Read( _Out_writes_(count) XMFLOAT4* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
// Helpers for data extraction
void __cdecl Release();
const D3D11_INPUT_ELEMENT_DESC* __cdecl GetElement( _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex ) const;
private:
// Private implementation.
class Impl;
std::unique_ptr<Impl> pImpl;
};
class VBWriter
{
public:
VBWriter();
VBWriter(VBWriter&& moveFrom);
VBWriter& operator= (VBWriter&& moveFrom);
VBWriter(VBWriter const&) = delete;
VBWriter& operator= (VBWriter const&) = delete;
~VBWriter();
HRESULT __cdecl Initialize( _In_reads_(nDecl) const D3D11_INPUT_ELEMENT_DESC* vbDecl, _In_ size_t nDecl );
// Does not support VB decls with D3D11_INPUT_PER_INSTANCE_DATA
HRESULT __cdecl AddStream( _Out_writes_bytes_(stride*nVerts) void* vb, _In_ size_t nVerts, _In_ size_t inputSlot, _In_ size_t stride = 0 );
// Add vertex buffer to writer
HRESULT __cdecl Write( _In_reads_(count) const XMVECTOR* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
// Inserts data elements into vertex buffer
HRESULT __cdecl Write( _In_reads_(count) const float* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Write( _In_reads_(count) const XMFLOAT2* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Write( _In_reads_(count) const XMFLOAT3* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Write( _In_reads_(count) const XMFLOAT4* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
// Helpers for data insertion
void __cdecl Release();
const D3D11_INPUT_ELEMENT_DESC* __cdecl GetElement( _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex ) const;
private:
// Private implementation.
class Impl;
std::unique_ptr<Impl> pImpl;
};
//---------------------------------------------------------------------------------
// Adjacency Computation
HRESULT __cdecl GenerateAdjacencyAndPointReps( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_ float epsilon,
_Out_writes_opt_(nVerts) uint32_t* pointRep,
_Out_writes_opt_(nFaces*3) uint32_t* adjacency );
HRESULT __cdecl GenerateAdjacencyAndPointReps( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_ float epsilon,
_Out_writes_opt_(nVerts) uint32_t* pointRep,
_Out_writes_opt_(nFaces*3) uint32_t* adjacency );
// If pointRep is null, it still generates them internally as they are needed for the final adjacency computation
HRESULT __cdecl ConvertPointRepsToAdjacency( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_reads_opt_(nVerts) const uint32_t* pointRep,
_Out_writes_(nFaces*3) uint32_t* adjacency );
HRESULT __cdecl ConvertPointRepsToAdjacency( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_reads_opt_(nVerts) const uint32_t* pointRep,
_Out_writes_(nFaces*3) uint32_t* adjacency );
// If pointRep is null, assumes an identity
HRESULT __cdecl GenerateGSAdjacency( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* pointRep,
_In_reads_(nFaces*3) const uint32_t* adjacency, _In_ size_t nVerts,
_Out_writes_(nFaces*6) uint16_t* indicesAdj );
HRESULT __cdecl GenerateGSAdjacency( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* pointRep,
_In_reads_(nFaces*3) const uint32_t* adjacency, _In_ size_t nVerts,
_Out_writes_(nFaces*6) uint32_t* indicesAdj );
// Generates an IB suitable for Geometry Shader using D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ
//---------------------------------------------------------------------------------
// Normals, Tangents, and Bi-Tangents Computation
enum CNORM_FLAGS
{
CNORM_DEFAULT = 0x0,
// Default is to compute normals using weight-by-angle
CNORM_WEIGHT_BY_AREA = 0x1,
// Computes normals using weight-by-area
CNORM_WEIGHT_EQUAL = 0x2,
// Compute normals with equal weights
CNORM_WIND_CW = 0x4,
// Vertices are clock-wise (defaults to CCW)
};
HRESULT __cdecl ComputeNormals( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_ DWORD flags,
_Out_writes_(nVerts) XMFLOAT3* normals );
HRESULT __cdecl ComputeNormals( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_ DWORD flags,
_Out_writes_(nVerts) XMFLOAT3* normals );
// Computes vertex normals
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_opt_(nVerts) XMFLOAT3* tangents,
_Out_writes_opt_(nVerts) XMFLOAT3* bitangents );
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_opt_(nVerts) XMFLOAT3* tangents,
_Out_writes_opt_(nVerts) XMFLOAT3* bitangents );
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_opt_(nVerts) XMFLOAT4* tangents,
_Out_writes_opt_(nVerts) XMFLOAT3* bitangents );
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_opt_(nVerts) XMFLOAT4* tangents,
_Out_writes_opt_(nVerts) XMFLOAT3* bitangents );
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_(nVerts) XMFLOAT4* tangents );
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_(nVerts) XMFLOAT4* tangents );
// Computes tangents and/or bi-tangents (optionally with handedness stored in .w)
//---------------------------------------------------------------------------------
// Mesh clean-up and validation
enum VALIDATE_FLAGS
{
VALIDATE_DEFAULT = 0x0,
VALIDATE_BACKFACING = 0x1,
// Check for duplicate neighbor from triangle (requires adjacency)
VALIDATE_BOWTIES = 0x2,
// Check for two fans of triangles using the same vertex (requires adjacency)
VALIDATE_DEGENERATE = 0x4,
// Check for degenerate triangles
VALIDATE_UNUSED = 0x8,
// Check for issues with 'unused' triangles
VALIDATE_ASYMMETRIC_ADJ = 0x10,
// Checks that neighbors are symmetric (requires adjacency)
};
HRESULT __cdecl Validate( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _In_reads_opt_(nFaces*3) const uint32_t* adjacency,
_In_ DWORD flags, _In_opt_ std::wstring* msgs = nullptr );
HRESULT __cdecl Validate( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _In_reads_opt_(nFaces*3) const uint32_t* adjacency,
_In_ DWORD flags, _In_opt_ std::wstring* msgs = nullptr );
// Checks the mesh for common problems, return 'S_OK' if no problems were found
HRESULT __cdecl Clean( _Inout_updates_all_(nFaces*3) uint16_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _Inout_updates_all_opt_(nFaces*3) uint32_t* adjacency,
_In_reads_opt_(nFaces) const uint32_t* attributes,
_Inout_ std::vector<uint32_t>& dupVerts, _In_ bool breakBowties=false );
HRESULT __cdecl Clean( _Inout_updates_all_(nFaces*3) uint32_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _Inout_updates_all_opt_(nFaces*3) uint32_t* adjacency,
_In_reads_opt_(nFaces) const uint32_t* attributes,
_Inout_ std::vector<uint32_t>& dupVerts, _In_ bool breakBowties=false );
// Cleans the mesh, splitting vertices if needed
//---------------------------------------------------------------------------------
// Mesh Optimization
HRESULT __cdecl AttributeSort( _In_ size_t nFaces, _Inout_updates_all_(nFaces) uint32_t* attributes,
_Out_writes_(nFaces) uint32_t* faceRemap );
// Reorders faces by attribute id
enum OPTFACES
{
OPTFACES_V_DEFAULT = 12,
OPTFACES_R_DEFAULT = 7,
// Default vertex cache size and restart threshold which is considered 'device independent'
OPTFACES_V_STRIPORDER = 0,
// Indicates no vertex cache optimization, only reordering into strips
};
HRESULT __cdecl OptimizeFaces( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nFaces*3) const uint32_t* adjacency,
_Out_writes_(nFaces) uint32_t* faceRemap,
_In_ uint32_t vertexCache = OPTFACES_V_DEFAULT,
_In_ uint32_t restart = OPTFACES_R_DEFAULT );
HRESULT __cdecl OptimizeFaces( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nFaces*3) const uint32_t* adjacency,
_Out_writes_(nFaces) uint32_t* faceRemap,
_In_ uint32_t vertexCache = OPTFACES_V_DEFAULT,
_In_ uint32_t restart = OPTFACES_R_DEFAULT );
// Reorders faces to increase hit rate of vertex caches
HRESULT __cdecl OptimizeFacesEx( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nFaces*3) const uint32_t* adjacency,
_In_reads_(nFaces) const uint32_t* attributes,
_Out_writes_(nFaces) uint32_t* faceRemap,
_In_ uint32_t vertexCache = OPTFACES_V_DEFAULT,
_In_ uint32_t restart = OPTFACES_R_DEFAULT );
HRESULT __cdecl OptimizeFacesEx( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nFaces*3) const uint32_t* adjacency,
_In_reads_(nFaces) const uint32_t* attributes,
_Out_writes_(nFaces) uint32_t* faceRemap,
_In_ uint32_t vertexCache = OPTFACES_V_DEFAULT,
_In_ uint32_t restart = OPTFACES_R_DEFAULT );
// Attribute group version of OptimizeFaces
HRESULT __cdecl OptimizeVertices( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces, _In_ size_t nVerts,
_Out_writes_(nVerts) uint32_t* vertexRemap );
HRESULT __cdecl OptimizeVertices( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces, _In_ size_t nVerts,
_Out_writes_(nVerts) uint32_t* vertexRemap );
// Reorders vertices in order of use
//---------------------------------------------------------------------------------
// Remap functions
HRESULT __cdecl ReorderIB( _In_reads_(nFaces*3) const uint16_t* ibin, _In_ size_t nFaces,
_In_reads_(nFaces) const uint32_t* faceRemap,
_Out_writes_(nFaces*3) uint16_t* ibout );
HRESULT __cdecl ReorderIB( _Inout_updates_all_(nFaces*3) uint16_t* ib, _In_ size_t nFaces,
_In_reads_(nFaces) const uint32_t* faceRemap );
HRESULT __cdecl ReorderIB( _In_reads_(nFaces*3) const uint32_t* ibin, _In_ size_t nFaces,
_In_reads_(nFaces) const uint32_t* faceRemap,
_Out_writes_(nFaces*3) uint32_t* ibout );
HRESULT __cdecl ReorderIB( _Inout_updates_all_(nFaces*3) uint32_t* ib, _In_ size_t nFaces,
_In_reads_(nFaces) const uint32_t* faceRemap );
// Applies a face remap reordering to an index buffer
HRESULT __cdecl ReorderIBAndAdjacency( _In_reads_(nFaces*3) const uint16_t* ibin, _In_ size_t nFaces, _In_reads_(nFaces*3) const uint32_t* adjin,
_In_reads_(nFaces) const uint32_t* faceRemap,
_Out_writes_(nFaces*3) uint16_t* ibout, _Out_writes_(nFaces*3) uint32_t* adjout );
HRESULT __cdecl ReorderIBAndAdjacency( _Inout_updates_all_(nFaces*3) uint16_t* ib, _In_ size_t nFaces, _Inout_updates_all_(nFaces*3) uint32_t* adj,
_In_reads_(nFaces) const uint32_t* faceRemap );
HRESULT __cdecl ReorderIBAndAdjacency( _In_reads_(nFaces*3) const uint32_t* ibin, _In_ size_t nFaces, _In_reads_(nFaces*3) const uint32_t* adjin,
_In_reads_(nFaces) const uint32_t* faceRemap,
_Out_writes_(nFaces*3) uint32_t* ibout, _Out_writes_(nFaces*3) uint32_t* adjout );
HRESULT __cdecl ReorderIBAndAdjacency( _Inout_updates_all_(nFaces*3) uint32_t* ib, _In_ size_t nFaces, _Inout_updates_all_(nFaces*3) uint32_t* adj,
_In_reads_(nFaces) const uint32_t* faceRemap );
// Applies a face remap reordering to an index buffer and adjacency
HRESULT __cdecl FinalizeIB( _In_reads_(nFaces*3) const uint16_t* ibin, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* vertexRemap, _In_ size_t nVerts,
_Out_writes_(nFaces*3) uint16_t* ibout );
HRESULT __cdecl FinalizeIB( _Inout_updates_all_(nFaces*3) uint16_t* ib, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* vertexRemap, _In_ size_t nVerts );
HRESULT __cdecl FinalizeIB( _In_reads_(nFaces*3) const uint32_t* ibin, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* vertexRemap, _In_ size_t nVerts,
_Out_writes_(nFaces*3) uint32_t* ibout );
HRESULT __cdecl FinalizeIB( _Inout_updates_all_(nFaces*3) uint32_t* ib, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* vertexRemap, _In_ size_t nVerts );
// Applies a vertex remap reordering to an index buffer
HRESULT __cdecl FinalizeVB( _In_reads_bytes_(nVerts*stride) const void* vbin, _In_ size_t stride, _In_ size_t nVerts,
_In_reads_opt_(nDupVerts) const uint32_t* dupVerts, _In_ size_t nDupVerts,
_In_reads_opt_(nVerts+nDupVerts) const uint32_t* vertexRemap,
_Out_writes_bytes_((nVerts+nDupVerts)*stride) void* vbout );
HRESULT __cdecl FinalizeVB( _Inout_updates_bytes_all_(nVerts*stride) void* vb, _In_ size_t stride, _In_ size_t nVerts,
_In_reads_(nVerts) const uint32_t* vertexRemap );
// Applies a vertex remap and/or a vertex duplication set to a vertex buffer
HRESULT __cdecl FinalizeVBAndPointReps( _In_reads_bytes_(nVerts*stride) const void* vbin, _In_ size_t stride, _In_ size_t nVerts,
_In_reads_(nVerts) const uint32_t* prin,
_In_reads_opt_(nDupVerts) const uint32_t* dupVerts, _In_ size_t nDupVerts,
_In_reads_opt_(nVerts+nDupVerts) const uint32_t* vertexRemap,
_Out_writes_bytes_((nVerts+nDupVerts)*stride) void* vbout,
_Out_writes_(nVerts+nDupVerts) uint32_t* prout );
HRESULT __cdecl FinalizeVBAndPointReps( _Inout_updates_bytes_all_(nVerts*stride) void* vb, _In_ size_t stride, _In_ size_t nVerts,
_Inout_updates_all_(nVerts) uint32_t* pointRep,
_In_reads_(nVerts) const uint32_t* vertexRemap );
// Applies a vertex remap and/or a vertex duplication set to a vertex buffer and point representatives
#include "DirectXMesh.inl"
}; // namespace
//-------------------------------------------------------------------------------------
// DirectXMesh.h
//
// DirectX Mesh Geometry Library
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#pragma once
#include <memory>
#include <string>
#include <vector>
#include <stdint.h>
#if defined(_XBOX_ONE) && defined(_TITLE)
#include <d3d11_x.h>
#define DCOMMON_H_INCLUDED
#else
#include <d3d11_1.h>
#endif
#include <directxmath.h>
#define DIRECTX_MESH_VERSION 101
namespace DirectX
{
//---------------------------------------------------------------------------------
// DXGI Format Utilities
bool __cdecl IsValidVB( _In_ DXGI_FORMAT fmt );
bool __cdecl IsValidIB( _In_ DXGI_FORMAT fmt );
size_t __cdecl BytesPerElement( _In_ DXGI_FORMAT fmt );
//---------------------------------------------------------------------------------
// Input Layout Descriptor Utilities
bool __cdecl IsValid( _In_reads_(nDecl) const D3D11_INPUT_ELEMENT_DESC* vbDecl, _In_ size_t nDecl );
void __cdecl ComputeInputLayout( _In_reads_(nDecl) const D3D11_INPUT_ELEMENT_DESC* vbDecl, _In_ size_t nDecl,
_Out_writes_opt_(nDecl) uint32_t* offsets,
_Out_writes_opt_(D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT) uint32_t* strides );
//---------------------------------------------------------------------------------
// Attribute Utilities
std::vector<std::pair<size_t,size_t>> __cdecl ComputeSubsets( _In_reads_opt_(nFaces) const uint32_t* attributes, _In_ size_t nFaces );
// Returns a list of face offset,counts for attribute groups
//---------------------------------------------------------------------------------
// Mesh Optimization Utilities
void __cdecl ComputeVertexCacheMissRate( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces, _In_ size_t nVerts,
_In_ size_t cacheSize, _Out_ float& acmr, _Out_ float& atvr );
void __cdecl ComputeVertexCacheMissRate( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces, _In_ size_t nVerts,
_In_ size_t cacheSize, _Out_ float& acmr, _Out_ float& atvr );
// Compute the average cache miss ratio and average triangle vertex reuse for the post-transform vertex cache
//---------------------------------------------------------------------------------
// Vertex Buffer Reader/Writer
class VBReader
{
public:
VBReader();
VBReader(VBReader&& moveFrom);
VBReader& operator= (VBReader&& moveFrom);
VBReader(VBReader const&) = delete;
VBReader& operator= (VBReader const&) = delete;
~VBReader();
HRESULT __cdecl Initialize( _In_reads_(nDecl) const D3D11_INPUT_ELEMENT_DESC* vbDecl, _In_ size_t nDecl );
// Does not support VB decls with D3D11_INPUT_PER_INSTANCE_DATA
HRESULT __cdecl AddStream( _In_reads_bytes_(stride*nVerts) const void* vb, _In_ size_t nVerts, _In_ size_t inputSlot, _In_ size_t stride = 0 );
// Add vertex buffer to reader
HRESULT __cdecl Read( _Out_writes_(count) XMVECTOR* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
// Extracts data elements from vertex buffer
HRESULT __cdecl Read( _Out_writes_(count) float* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Read( _Out_writes_(count) XMFLOAT2* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Read( _Out_writes_(count) XMFLOAT3* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Read( _Out_writes_(count) XMFLOAT4* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
// Helpers for data extraction
void __cdecl Release();
const D3D11_INPUT_ELEMENT_DESC* __cdecl GetElement( _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex ) const;
private:
// Private implementation.
class Impl;
std::unique_ptr<Impl> pImpl;
};
class VBWriter
{
public:
VBWriter();
VBWriter(VBWriter&& moveFrom);
VBWriter& operator= (VBWriter&& moveFrom);
VBWriter(VBWriter const&) = delete;
VBWriter& operator= (VBWriter const&) = delete;
~VBWriter();
HRESULT __cdecl Initialize( _In_reads_(nDecl) const D3D11_INPUT_ELEMENT_DESC* vbDecl, _In_ size_t nDecl );
// Does not support VB decls with D3D11_INPUT_PER_INSTANCE_DATA
HRESULT __cdecl AddStream( _Out_writes_bytes_(stride*nVerts) void* vb, _In_ size_t nVerts, _In_ size_t inputSlot, _In_ size_t stride = 0 );
// Add vertex buffer to writer
HRESULT __cdecl Write( _In_reads_(count) const XMVECTOR* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
// Inserts data elements into vertex buffer
HRESULT __cdecl Write( _In_reads_(count) const float* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Write( _In_reads_(count) const XMFLOAT2* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Write( _In_reads_(count) const XMFLOAT3* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
HRESULT __cdecl Write( _In_reads_(count) const XMFLOAT4* buffer, _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex, _In_ size_t count ) const;
// Helpers for data insertion
void __cdecl Release();
const D3D11_INPUT_ELEMENT_DESC* __cdecl GetElement( _In_z_ LPCSTR semanticName, _In_ UINT semanticIndex ) const;
private:
// Private implementation.
class Impl;
std::unique_ptr<Impl> pImpl;
};
//---------------------------------------------------------------------------------
// Adjacency Computation
HRESULT __cdecl GenerateAdjacencyAndPointReps( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_ float epsilon,
_Out_writes_opt_(nVerts) uint32_t* pointRep,
_Out_writes_opt_(nFaces*3) uint32_t* adjacency );
HRESULT __cdecl GenerateAdjacencyAndPointReps( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_ float epsilon,
_Out_writes_opt_(nVerts) uint32_t* pointRep,
_Out_writes_opt_(nFaces*3) uint32_t* adjacency );
// If pointRep is null, it still generates them internally as they are needed for the final adjacency computation
HRESULT __cdecl ConvertPointRepsToAdjacency( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_reads_opt_(nVerts) const uint32_t* pointRep,
_Out_writes_(nFaces*3) uint32_t* adjacency );
HRESULT __cdecl ConvertPointRepsToAdjacency( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_reads_opt_(nVerts) const uint32_t* pointRep,
_Out_writes_(nFaces*3) uint32_t* adjacency );
// If pointRep is null, assumes an identity
HRESULT __cdecl GenerateGSAdjacency( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* pointRep,
_In_reads_(nFaces*3) const uint32_t* adjacency, _In_ size_t nVerts,
_Out_writes_(nFaces*6) uint16_t* indicesAdj );
HRESULT __cdecl GenerateGSAdjacency( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* pointRep,
_In_reads_(nFaces*3) const uint32_t* adjacency, _In_ size_t nVerts,
_Out_writes_(nFaces*6) uint32_t* indicesAdj );
// Generates an IB suitable for Geometry Shader using D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ
//---------------------------------------------------------------------------------
// Normals, Tangents, and Bi-Tangents Computation
enum CNORM_FLAGS
{
CNORM_DEFAULT = 0x0,
// Default is to compute normals using weight-by-angle
CNORM_WEIGHT_BY_AREA = 0x1,
// Computes normals using weight-by-area
CNORM_WEIGHT_EQUAL = 0x2,
// Compute normals with equal weights
CNORM_WIND_CW = 0x4,
// Vertices are clock-wise (defaults to CCW)
};
HRESULT __cdecl ComputeNormals( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_ DWORD flags,
_Out_writes_(nVerts) XMFLOAT3* normals );
HRESULT __cdecl ComputeNormals( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, _In_ size_t nVerts,
_In_ DWORD flags,
_Out_writes_(nVerts) XMFLOAT3* normals );
// Computes vertex normals
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_opt_(nVerts) XMFLOAT3* tangents,
_Out_writes_opt_(nVerts) XMFLOAT3* bitangents );
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_opt_(nVerts) XMFLOAT3* tangents,
_Out_writes_opt_(nVerts) XMFLOAT3* bitangents );
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_opt_(nVerts) XMFLOAT4* tangents,
_Out_writes_opt_(nVerts) XMFLOAT3* bitangents );
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_opt_(nVerts) XMFLOAT4* tangents,
_Out_writes_opt_(nVerts) XMFLOAT3* bitangents );
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_(nVerts) XMFLOAT4* tangents );
HRESULT __cdecl ComputeTangentFrame( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords, _In_ size_t nVerts,
_Out_writes_(nVerts) XMFLOAT4* tangents );
// Computes tangents and/or bi-tangents (optionally with handedness stored in .w)
//---------------------------------------------------------------------------------
// Mesh clean-up and validation
enum VALIDATE_FLAGS
{
VALIDATE_DEFAULT = 0x0,
VALIDATE_BACKFACING = 0x1,
// Check for duplicate neighbor from triangle (requires adjacency)
VALIDATE_BOWTIES = 0x2,
// Check for two fans of triangles using the same vertex (requires adjacency)
VALIDATE_DEGENERATE = 0x4,
// Check for degenerate triangles
VALIDATE_UNUSED = 0x8,
// Check for issues with 'unused' triangles
VALIDATE_ASYMMETRIC_ADJ = 0x10,
// Checks that neighbors are symmetric (requires adjacency)
};
HRESULT __cdecl Validate( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _In_reads_opt_(nFaces*3) const uint32_t* adjacency,
_In_ DWORD flags, _In_opt_ std::wstring* msgs = nullptr );
HRESULT __cdecl Validate( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _In_reads_opt_(nFaces*3) const uint32_t* adjacency,
_In_ DWORD flags, _In_opt_ std::wstring* msgs = nullptr );
// Checks the mesh for common problems, return 'S_OK' if no problems were found
HRESULT __cdecl Clean( _Inout_updates_all_(nFaces*3) uint16_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _Inout_updates_all_opt_(nFaces*3) uint32_t* adjacency,
_In_reads_opt_(nFaces) const uint32_t* attributes,
_Inout_ std::vector<uint32_t>& dupVerts, _In_ bool breakBowties=false );
HRESULT __cdecl Clean( _Inout_updates_all_(nFaces*3) uint32_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _Inout_updates_all_opt_(nFaces*3) uint32_t* adjacency,
_In_reads_opt_(nFaces) const uint32_t* attributes,
_Inout_ std::vector<uint32_t>& dupVerts, _In_ bool breakBowties=false );
// Cleans the mesh, splitting vertices if needed
//---------------------------------------------------------------------------------
// Mesh Optimization
HRESULT __cdecl AttributeSort( _In_ size_t nFaces, _Inout_updates_all_(nFaces) uint32_t* attributes,
_Out_writes_(nFaces) uint32_t* faceRemap );
// Reorders faces by attribute id
enum OPTFACES
{
OPTFACES_V_DEFAULT = 12,
OPTFACES_R_DEFAULT = 7,
// Default vertex cache size and restart threshold which is considered 'device independent'
OPTFACES_V_STRIPORDER = 0,
// Indicates no vertex cache optimization, only reordering into strips
};
HRESULT __cdecl OptimizeFaces( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nFaces*3) const uint32_t* adjacency,
_Out_writes_(nFaces) uint32_t* faceRemap,
_In_ uint32_t vertexCache = OPTFACES_V_DEFAULT,
_In_ uint32_t restart = OPTFACES_R_DEFAULT );
HRESULT __cdecl OptimizeFaces( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nFaces*3) const uint32_t* adjacency,
_Out_writes_(nFaces) uint32_t* faceRemap,
_In_ uint32_t vertexCache = OPTFACES_V_DEFAULT,
_In_ uint32_t restart = OPTFACES_R_DEFAULT );
// Reorders faces to increase hit rate of vertex caches
HRESULT __cdecl OptimizeFacesEx( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces,
_In_reads_(nFaces*3) const uint32_t* adjacency,
_In_reads_(nFaces) const uint32_t* attributes,
_Out_writes_(nFaces) uint32_t* faceRemap,
_In_ uint32_t vertexCache = OPTFACES_V_DEFAULT,
_In_ uint32_t restart = OPTFACES_R_DEFAULT );
HRESULT __cdecl OptimizeFacesEx( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces,
_In_reads_(nFaces*3) const uint32_t* adjacency,
_In_reads_(nFaces) const uint32_t* attributes,
_Out_writes_(nFaces) uint32_t* faceRemap,
_In_ uint32_t vertexCache = OPTFACES_V_DEFAULT,
_In_ uint32_t restart = OPTFACES_R_DEFAULT );
// Attribute group version of OptimizeFaces
HRESULT __cdecl OptimizeVertices( _In_reads_(nFaces*3) const uint16_t* indices, _In_ size_t nFaces, _In_ size_t nVerts,
_Out_writes_(nVerts) uint32_t* vertexRemap );
HRESULT __cdecl OptimizeVertices( _In_reads_(nFaces*3) const uint32_t* indices, _In_ size_t nFaces, _In_ size_t nVerts,
_Out_writes_(nVerts) uint32_t* vertexRemap );
// Reorders vertices in order of use
//---------------------------------------------------------------------------------
// Remap functions
HRESULT __cdecl ReorderIB( _In_reads_(nFaces*3) const uint16_t* ibin, _In_ size_t nFaces,
_In_reads_(nFaces) const uint32_t* faceRemap,
_Out_writes_(nFaces*3) uint16_t* ibout );
HRESULT __cdecl ReorderIB( _Inout_updates_all_(nFaces*3) uint16_t* ib, _In_ size_t nFaces,
_In_reads_(nFaces) const uint32_t* faceRemap );
HRESULT __cdecl ReorderIB( _In_reads_(nFaces*3) const uint32_t* ibin, _In_ size_t nFaces,
_In_reads_(nFaces) const uint32_t* faceRemap,
_Out_writes_(nFaces*3) uint32_t* ibout );
HRESULT __cdecl ReorderIB( _Inout_updates_all_(nFaces*3) uint32_t* ib, _In_ size_t nFaces,
_In_reads_(nFaces) const uint32_t* faceRemap );
// Applies a face remap reordering to an index buffer
HRESULT __cdecl ReorderIBAndAdjacency( _In_reads_(nFaces*3) const uint16_t* ibin, _In_ size_t nFaces, _In_reads_(nFaces*3) const uint32_t* adjin,
_In_reads_(nFaces) const uint32_t* faceRemap,
_Out_writes_(nFaces*3) uint16_t* ibout, _Out_writes_(nFaces*3) uint32_t* adjout );
HRESULT __cdecl ReorderIBAndAdjacency( _Inout_updates_all_(nFaces*3) uint16_t* ib, _In_ size_t nFaces, _Inout_updates_all_(nFaces*3) uint32_t* adj,
_In_reads_(nFaces) const uint32_t* faceRemap );
HRESULT __cdecl ReorderIBAndAdjacency( _In_reads_(nFaces*3) const uint32_t* ibin, _In_ size_t nFaces, _In_reads_(nFaces*3) const uint32_t* adjin,
_In_reads_(nFaces) const uint32_t* faceRemap,
_Out_writes_(nFaces*3) uint32_t* ibout, _Out_writes_(nFaces*3) uint32_t* adjout );
HRESULT __cdecl ReorderIBAndAdjacency( _Inout_updates_all_(nFaces*3) uint32_t* ib, _In_ size_t nFaces, _Inout_updates_all_(nFaces*3) uint32_t* adj,
_In_reads_(nFaces) const uint32_t* faceRemap );
// Applies a face remap reordering to an index buffer and adjacency
HRESULT __cdecl FinalizeIB( _In_reads_(nFaces*3) const uint16_t* ibin, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* vertexRemap, _In_ size_t nVerts,
_Out_writes_(nFaces*3) uint16_t* ibout );
HRESULT __cdecl FinalizeIB( _Inout_updates_all_(nFaces*3) uint16_t* ib, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* vertexRemap, _In_ size_t nVerts );
HRESULT __cdecl FinalizeIB( _In_reads_(nFaces*3) const uint32_t* ibin, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* vertexRemap, _In_ size_t nVerts,
_Out_writes_(nFaces*3) uint32_t* ibout );
HRESULT __cdecl FinalizeIB( _Inout_updates_all_(nFaces*3) uint32_t* ib, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* vertexRemap, _In_ size_t nVerts );
// Applies a vertex remap reordering to an index buffer
HRESULT __cdecl FinalizeVB( _In_reads_bytes_(nVerts*stride) const void* vbin, _In_ size_t stride, _In_ size_t nVerts,
_In_reads_opt_(nDupVerts) const uint32_t* dupVerts, _In_ size_t nDupVerts,
_In_reads_opt_(nVerts+nDupVerts) const uint32_t* vertexRemap,
_Out_writes_bytes_((nVerts+nDupVerts)*stride) void* vbout );
HRESULT __cdecl FinalizeVB( _Inout_updates_bytes_all_(nVerts*stride) void* vb, _In_ size_t stride, _In_ size_t nVerts,
_In_reads_(nVerts) const uint32_t* vertexRemap );
// Applies a vertex remap and/or a vertex duplication set to a vertex buffer
HRESULT __cdecl FinalizeVBAndPointReps( _In_reads_bytes_(nVerts*stride) const void* vbin, _In_ size_t stride, _In_ size_t nVerts,
_In_reads_(nVerts) const uint32_t* prin,
_In_reads_opt_(nDupVerts) const uint32_t* dupVerts, _In_ size_t nDupVerts,
_In_reads_opt_(nVerts+nDupVerts) const uint32_t* vertexRemap,
_Out_writes_bytes_((nVerts+nDupVerts)*stride) void* vbout,
_Out_writes_(nVerts+nDupVerts) uint32_t* prout );
HRESULT __cdecl FinalizeVBAndPointReps( _Inout_updates_bytes_all_(nVerts*stride) void* vb, _In_ size_t stride, _In_ size_t nVerts,
_Inout_updates_all_(nVerts) uint32_t* pointRep,
_In_reads_(nVerts) const uint32_t* vertexRemap );
// Applies a vertex remap and/or a vertex duplication set to a vertex buffer and point representatives
#include "DirectXMesh.inl"
}; // namespace

Просмотреть файл

@ -1,31 +1,31 @@
//-------------------------------------------------------------------------------------
// DirectXMesh.inl
//
// DirectX Mesh Geometry Library
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#pragma once
//=====================================================================================
// DXGI Format Utilities
//=====================================================================================
_Use_decl_annotations_
inline bool __cdecl IsValidVB( DXGI_FORMAT fmt )
{
return BytesPerElement( fmt ) != 0;
}
_Use_decl_annotations_
inline bool __cdecl IsValidIB( DXGI_FORMAT fmt )
{
return ( fmt == DXGI_FORMAT_R32_UINT || fmt == DXGI_FORMAT_R16_UINT ) != 0;
}
//-------------------------------------------------------------------------------------
// DirectXMesh.inl
//
// DirectX Mesh Geometry Library
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#pragma once
//=====================================================================================
// DXGI Format Utilities
//=====================================================================================
_Use_decl_annotations_
inline bool __cdecl IsValidVB( DXGI_FORMAT fmt )
{
return BytesPerElement( fmt ) != 0;
}
_Use_decl_annotations_
inline bool __cdecl IsValidIB( DXGI_FORMAT fmt )
{
return ( fmt == DXGI_FORMAT_R32_UINT || fmt == DXGI_FORMAT_R16_UINT ) != 0;
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,449 +1,449 @@
//-------------------------------------------------------------------------------------
// DirectXMeshClean.cpp
//
// DirectX Mesh Geometry Library - Mesh clean-up
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
using namespace DirectX;
namespace
{
template<class index_t>
HRESULT _Clean( _Inout_updates_all_(nFaces*3) index_t* indices,
size_t nFaces, size_t nVerts,
_Inout_updates_all_opt_(nFaces*3) uint32_t* adjacency,
_In_reads_opt_(nFaces) const uint32_t* attributes,
_Inout_ std::vector<uint32_t>& dupVerts, bool breakBowties )
{
if ( !adjacency && !attributes )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
dupVerts.clear();
size_t curNewVert = nVerts;
size_t tsize = ( sizeof(bool) * nFaces * 3 ) + ( sizeof(uint32_t) * nVerts ) + ( sizeof(index_t) * nFaces * 3 );
std::unique_ptr<uint8_t[]> temp( new (std::nothrow) uint8_t[ tsize ] );
if ( !temp )
return E_OUTOFMEMORY;
auto faceSeen = reinterpret_cast<bool*>( temp.get() );
auto ids = reinterpret_cast<uint32_t*>( temp.get() + sizeof(bool) * nFaces * 3 );
// UNUSED/DEGENERATE cleanup
for( uint32_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
{
// ensure all index entries in the unused face are 'unused'
indices[ face*3 ] =
indices[ face*3 + 1 ] =
indices[ face*3 + 2 ] = index_t(-1);
// ensure no neighbor references the unused face
if ( adjacency )
{
for( uint32_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k != UNUSED32 )
{
assert( k < nFaces );
_Analysis_assume_( k < nFaces );
if ( adjacency[ k*3 ] == face )
adjacency[ k*3 ] = UNUSED32;
if ( adjacency[ k*3 + 1 ] == face )
adjacency[ k*3 + 1 ] = UNUSED32;
if ( adjacency[ k*3 + 2 ] == face )
adjacency[ k*3 + 2 ] = UNUSED32;
adjacency[ face*3 + point ] = UNUSED32;
}
}
}
}
else if ( i0 == i1
|| i0 == i2
|| i1 == i2 )
{
// Clean doesn't trim out degenerates as most other functions ignore them
// ensure no neighbor references the degenerate face
if ( adjacency )
{
for( uint32_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k != UNUSED32 )
{
assert( k < nFaces );
_Analysis_assume_( k < nFaces );
if ( adjacency[ k*3 ] == face )
adjacency[ k*3 ] = UNUSED32;
if ( adjacency[ k*3 + 1 ] == face )
adjacency[ k*3 + 1 ] = UNUSED32;
if ( adjacency[ k*3 + 2 ] == face )
adjacency[ k*3 + 2 ] = UNUSED32;
adjacency[ face*3 + point ] = UNUSED32;
}
}
}
}
}
// ASYMMETRIC ADJ cleanup
if ( adjacency )
{
for(;;)
{
bool unlinked = false;
for( uint32_t face = 0; face < nFaces; ++face )
{
for( size_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k != UNUSED32 )
{
assert( k < nFaces );
_Analysis_assume_( k < nFaces );
uint32_t edge = find_edge<uint32_t>( &adjacency[ k * 3 ], face );
if ( edge >= 3 )
{
unlinked = true;
adjacency[ face*3 + point ] = UNUSED32;
}
}
}
}
if ( !unlinked )
break;
}
}
// BACKFACING cleanup
if ( adjacency )
{
for( size_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
{
// ignore unused faces
continue;
}
assert( i0 < nVerts );
assert( i1 < nVerts );
assert( i2 < nVerts );
if ( i0 == i1
|| i0 == i2
|| i1 == i2 )
{
// ignore degenerate faces
continue;
}
uint32_t j0 = adjacency[ face*3 ];
uint32_t j1 = adjacency[ face*3 + 1 ];
uint32_t j2 = adjacency[ face*3 + 2 ];
if ( ( j0 == j1 && j0 != UNUSED32 )
|| ( j0 == j2 && j0 != UNUSED32 )
|| ( j1 == j2 && j1 != UNUSED32 ) )
{
uint32_t neighbor;
if ( j0 == j1 || j0 == j2 )
{
neighbor = j0;
}
else
{
neighbor = j1;
}
// remove links then break bowties will clean up any remaining issues
for( uint32_t edge = 0; edge < 3; ++edge )
{
if ( adjacency[ face * 3 + edge ] == neighbor )
{
adjacency[ face * 3 + edge ] = UNUSED32;
}
if ( adjacency[ neighbor * 3 + edge ] == face )
{
adjacency[ neighbor * 3 + edge ] = UNUSED32;
}
}
}
}
}
auto indicesNew = reinterpret_cast<index_t*>( reinterpret_cast<uint8_t*>( ids ) + sizeof(uint32_t) * nVerts );
memcpy( indicesNew, indices, sizeof(index_t) * nFaces * 3 );
// BOWTIES cleanup
if ( adjacency && breakBowties )
{
memset( faceSeen, 0, sizeof(bool) * nFaces * 3 );
memset( ids, 0xFF, sizeof(uint32_t) * nVerts );
orbit_iterator<index_t> ovi( adjacency, indices, nFaces );
for( uint32_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
{
// ignore unused faces
faceSeen[ face * 3 ] = true;
faceSeen[ face * 3 + 1 ] = true;
faceSeen[ face * 3 + 2 ] = true;
continue;
}
assert( i0 < nVerts );
assert( i1 < nVerts );
assert( i2 < nVerts );
if ( i0 == i1
|| i0 == i2
|| i1 == i2 )
{
// ignore degenerate faces
faceSeen[ face * 3 ] = true;
faceSeen[ face * 3 + 1 ] = true;
faceSeen[ face * 3 + 2 ] = true;
continue;
}
for( uint32_t point = 0; point < 3; ++point )
{
if ( faceSeen[ face * 3 + point ] )
continue;
faceSeen[ face * 3 + point ] = true;
index_t i = indices[ face*3 + point ];
if ( i == index_t(-1) )
continue;
assert( i < nVerts );
ovi.initialize( face, i, orbit_iterator<index_t>::ALL );
ovi.moveToCCW();
index_t replaceVertex = index_t(-1);
index_t replaceValue = index_t(-1);
while ( !ovi.done() )
{
uint32_t curFace = ovi.nextFace();
if ( curFace >= nFaces )
return E_FAIL;
uint32_t curPoint = ovi.getpoint();
if ( curPoint > 2 )
return E_FAIL;
faceSeen[ curFace*3 + curPoint ] = true;
index_t j = indices[ curFace * 3 + curPoint ];
if ( j == index_t(-1) )
continue;
assert ( j < nVerts );
if ( j == replaceVertex )
{
indicesNew[ curFace * 3 + curPoint ] = replaceValue;
}
else if ( ids[ j ] == UNUSED32 )
{
ids[ j ] = face;
}
else if ( ids[ j ] != face )
{
// We found a bowtie, duplicate a vert
replaceVertex = j;
replaceValue = index_t( curNewVert );
indicesNew[ curFace * 3 + curPoint ] = replaceValue;
++curNewVert;
dupVerts.push_back( j );
}
}
}
}
assert( ( nVerts + dupVerts.size() ) == curNewVert );
}
// Ensure no vertex is used by more than one attribute
if ( attributes )
{
memset( ids, 0xFF, sizeof(uint32_t) * nVerts );
std::vector<uint32_t> dupAttr;
dupAttr.reserve( dupVerts.size() );
for( size_t j = 0; j < dupVerts.size(); ++j )
{
dupAttr.push_back( UNUSED32 );
}
std::unordered_multimap<uint32_t,size_t> dups;
for( size_t face = 0; face < nFaces; ++face )
{
uint32_t a = attributes[ face ];
for( size_t point = 0; point < 3; ++point )
{
uint32_t j = indicesNew[ face*3 + point ];
uint32_t k = ( j >= nVerts ) ? dupAttr[ j - nVerts ] : ids[ j ];
if ( k == UNUSED32 )
{
if ( j >= nVerts )
dupAttr[ j - nVerts ] = a;
else
ids[ j ] = a;
}
else if ( k != a )
{
// Look for a dup with the correct attribute
auto range = dups.equal_range( j );
auto it = range.first;
for( ; it != range.second; ++it )
{
uint32_t m = ( it->second >= nVerts ) ? dupAttr[ it->second - nVerts ] : ids[ it->second ];
if ( m == a )
{
indicesNew[ face * 3 + point ] = index_t( it->second );
break;
}
}
if ( it == range.second )
{
// Duplicate the vert
dups.insert( std::pair<uint32_t,size_t>( j, curNewVert ) );
indicesNew[ face * 3 + point ] = index_t( curNewVert );
++curNewVert;
if ( j >= nVerts )
{
dupVerts.push_back( dupVerts[ j - nVerts ] );
}
else
{
dupVerts.push_back( j );
}
dupAttr.push_back( a );
assert( dupVerts.size() == dupAttr.size() );
}
}
}
}
assert( ( nVerts + dupVerts.size() ) == curNewVert );
#ifndef NDEBUG
for( auto it = dupVerts.begin(); it != dupVerts.end(); ++it )
{
assert( *it < nVerts );
}
#endif
}
if ( (uint64_t(nVerts) + uint64_t(dupVerts.size()) ) >= index_t(-1) )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
if ( !dupVerts.empty() )
{
memcpy( indices, indicesNew, sizeof(index_t) * nFaces * 3 );
}
return S_OK;
}
};
namespace DirectX
{
//=====================================================================================
// Entry-points
//=====================================================================================
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT Clean( uint16_t* indices, size_t nFaces, size_t nVerts, uint32_t* adjacency, const uint32_t* attributes,
std::vector<uint32_t>& dupVerts, bool breakBowties )
{
HRESULT hr = Validate( indices, nFaces, nVerts, adjacency, VALIDATE_DEFAULT );
if ( FAILED(hr) )
return hr;
return _Clean<uint16_t>( indices, nFaces, nVerts, adjacency, attributes, dupVerts, breakBowties );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT Clean( uint32_t* indices, size_t nFaces, size_t nVerts, uint32_t* adjacency, const uint32_t* attributes,
std::vector<uint32_t>& dupVerts, bool breakBowties )
{
HRESULT hr = Validate( indices, nFaces, nVerts, adjacency, VALIDATE_DEFAULT );
if ( FAILED(hr) )
return hr;
return _Clean<uint32_t>( indices, nFaces, nVerts, adjacency, attributes, dupVerts, breakBowties );
}
//-------------------------------------------------------------------------------------
// DirectXMeshClean.cpp
//
// DirectX Mesh Geometry Library - Mesh clean-up
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
using namespace DirectX;
namespace
{
template<class index_t>
HRESULT _Clean( _Inout_updates_all_(nFaces*3) index_t* indices,
size_t nFaces, size_t nVerts,
_Inout_updates_all_opt_(nFaces*3) uint32_t* adjacency,
_In_reads_opt_(nFaces) const uint32_t* attributes,
_Inout_ std::vector<uint32_t>& dupVerts, bool breakBowties )
{
if ( !adjacency && !attributes )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
dupVerts.clear();
size_t curNewVert = nVerts;
size_t tsize = ( sizeof(bool) * nFaces * 3 ) + ( sizeof(uint32_t) * nVerts ) + ( sizeof(index_t) * nFaces * 3 );
std::unique_ptr<uint8_t[]> temp( new (std::nothrow) uint8_t[ tsize ] );
if ( !temp )
return E_OUTOFMEMORY;
auto faceSeen = reinterpret_cast<bool*>( temp.get() );
auto ids = reinterpret_cast<uint32_t*>( temp.get() + sizeof(bool) * nFaces * 3 );
// UNUSED/DEGENERATE cleanup
for( uint32_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
{
// ensure all index entries in the unused face are 'unused'
indices[ face*3 ] =
indices[ face*3 + 1 ] =
indices[ face*3 + 2 ] = index_t(-1);
// ensure no neighbor references the unused face
if ( adjacency )
{
for( uint32_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k != UNUSED32 )
{
assert( k < nFaces );
_Analysis_assume_( k < nFaces );
if ( adjacency[ k*3 ] == face )
adjacency[ k*3 ] = UNUSED32;
if ( adjacency[ k*3 + 1 ] == face )
adjacency[ k*3 + 1 ] = UNUSED32;
if ( adjacency[ k*3 + 2 ] == face )
adjacency[ k*3 + 2 ] = UNUSED32;
adjacency[ face*3 + point ] = UNUSED32;
}
}
}
}
else if ( i0 == i1
|| i0 == i2
|| i1 == i2 )
{
// Clean doesn't trim out degenerates as most other functions ignore them
// ensure no neighbor references the degenerate face
if ( adjacency )
{
for( uint32_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k != UNUSED32 )
{
assert( k < nFaces );
_Analysis_assume_( k < nFaces );
if ( adjacency[ k*3 ] == face )
adjacency[ k*3 ] = UNUSED32;
if ( adjacency[ k*3 + 1 ] == face )
adjacency[ k*3 + 1 ] = UNUSED32;
if ( adjacency[ k*3 + 2 ] == face )
adjacency[ k*3 + 2 ] = UNUSED32;
adjacency[ face*3 + point ] = UNUSED32;
}
}
}
}
}
// ASYMMETRIC ADJ cleanup
if ( adjacency )
{
for(;;)
{
bool unlinked = false;
for( uint32_t face = 0; face < nFaces; ++face )
{
for( size_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k != UNUSED32 )
{
assert( k < nFaces );
_Analysis_assume_( k < nFaces );
uint32_t edge = find_edge<uint32_t>( &adjacency[ k * 3 ], face );
if ( edge >= 3 )
{
unlinked = true;
adjacency[ face*3 + point ] = UNUSED32;
}
}
}
}
if ( !unlinked )
break;
}
}
// BACKFACING cleanup
if ( adjacency )
{
for( size_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
{
// ignore unused faces
continue;
}
assert( i0 < nVerts );
assert( i1 < nVerts );
assert( i2 < nVerts );
if ( i0 == i1
|| i0 == i2
|| i1 == i2 )
{
// ignore degenerate faces
continue;
}
uint32_t j0 = adjacency[ face*3 ];
uint32_t j1 = adjacency[ face*3 + 1 ];
uint32_t j2 = adjacency[ face*3 + 2 ];
if ( ( j0 == j1 && j0 != UNUSED32 )
|| ( j0 == j2 && j0 != UNUSED32 )
|| ( j1 == j2 && j1 != UNUSED32 ) )
{
uint32_t neighbor;
if ( j0 == j1 || j0 == j2 )
{
neighbor = j0;
}
else
{
neighbor = j1;
}
// remove links then break bowties will clean up any remaining issues
for( uint32_t edge = 0; edge < 3; ++edge )
{
if ( adjacency[ face * 3 + edge ] == neighbor )
{
adjacency[ face * 3 + edge ] = UNUSED32;
}
if ( adjacency[ neighbor * 3 + edge ] == face )
{
adjacency[ neighbor * 3 + edge ] = UNUSED32;
}
}
}
}
}
auto indicesNew = reinterpret_cast<index_t*>( reinterpret_cast<uint8_t*>( ids ) + sizeof(uint32_t) * nVerts );
memcpy( indicesNew, indices, sizeof(index_t) * nFaces * 3 );
// BOWTIES cleanup
if ( adjacency && breakBowties )
{
memset( faceSeen, 0, sizeof(bool) * nFaces * 3 );
memset( ids, 0xFF, sizeof(uint32_t) * nVerts );
orbit_iterator<index_t> ovi( adjacency, indices, nFaces );
for( uint32_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
{
// ignore unused faces
faceSeen[ face * 3 ] = true;
faceSeen[ face * 3 + 1 ] = true;
faceSeen[ face * 3 + 2 ] = true;
continue;
}
assert( i0 < nVerts );
assert( i1 < nVerts );
assert( i2 < nVerts );
if ( i0 == i1
|| i0 == i2
|| i1 == i2 )
{
// ignore degenerate faces
faceSeen[ face * 3 ] = true;
faceSeen[ face * 3 + 1 ] = true;
faceSeen[ face * 3 + 2 ] = true;
continue;
}
for( uint32_t point = 0; point < 3; ++point )
{
if ( faceSeen[ face * 3 + point ] )
continue;
faceSeen[ face * 3 + point ] = true;
index_t i = indices[ face*3 + point ];
if ( i == index_t(-1) )
continue;
assert( i < nVerts );
ovi.initialize( face, i, orbit_iterator<index_t>::ALL );
ovi.moveToCCW();
index_t replaceVertex = index_t(-1);
index_t replaceValue = index_t(-1);
while ( !ovi.done() )
{
uint32_t curFace = ovi.nextFace();
if ( curFace >= nFaces )
return E_FAIL;
uint32_t curPoint = ovi.getpoint();
if ( curPoint > 2 )
return E_FAIL;
faceSeen[ curFace*3 + curPoint ] = true;
index_t j = indices[ curFace * 3 + curPoint ];
if ( j == index_t(-1) )
continue;
assert ( j < nVerts );
if ( j == replaceVertex )
{
indicesNew[ curFace * 3 + curPoint ] = replaceValue;
}
else if ( ids[ j ] == UNUSED32 )
{
ids[ j ] = face;
}
else if ( ids[ j ] != face )
{
// We found a bowtie, duplicate a vert
replaceVertex = j;
replaceValue = index_t( curNewVert );
indicesNew[ curFace * 3 + curPoint ] = replaceValue;
++curNewVert;
dupVerts.push_back( j );
}
}
}
}
assert( ( nVerts + dupVerts.size() ) == curNewVert );
}
// Ensure no vertex is used by more than one attribute
if ( attributes )
{
memset( ids, 0xFF, sizeof(uint32_t) * nVerts );
std::vector<uint32_t> dupAttr;
dupAttr.reserve( dupVerts.size() );
for( size_t j = 0; j < dupVerts.size(); ++j )
{
dupAttr.push_back( UNUSED32 );
}
std::unordered_multimap<uint32_t,size_t> dups;
for( size_t face = 0; face < nFaces; ++face )
{
uint32_t a = attributes[ face ];
for( size_t point = 0; point < 3; ++point )
{
uint32_t j = indicesNew[ face*3 + point ];
uint32_t k = ( j >= nVerts ) ? dupAttr[ j - nVerts ] : ids[ j ];
if ( k == UNUSED32 )
{
if ( j >= nVerts )
dupAttr[ j - nVerts ] = a;
else
ids[ j ] = a;
}
else if ( k != a )
{
// Look for a dup with the correct attribute
auto range = dups.equal_range( j );
auto it = range.first;
for( ; it != range.second; ++it )
{
uint32_t m = ( it->second >= nVerts ) ? dupAttr[ it->second - nVerts ] : ids[ it->second ];
if ( m == a )
{
indicesNew[ face * 3 + point ] = index_t( it->second );
break;
}
}
if ( it == range.second )
{
// Duplicate the vert
dups.insert( std::pair<uint32_t,size_t>( j, curNewVert ) );
indicesNew[ face * 3 + point ] = index_t( curNewVert );
++curNewVert;
if ( j >= nVerts )
{
dupVerts.push_back( dupVerts[ j - nVerts ] );
}
else
{
dupVerts.push_back( j );
}
dupAttr.push_back( a );
assert( dupVerts.size() == dupAttr.size() );
}
}
}
}
assert( ( nVerts + dupVerts.size() ) == curNewVert );
#ifndef NDEBUG
for( auto it = dupVerts.begin(); it != dupVerts.end(); ++it )
{
assert( *it < nVerts );
}
#endif
}
if ( (uint64_t(nVerts) + uint64_t(dupVerts.size()) ) >= index_t(-1) )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
if ( !dupVerts.empty() )
{
memcpy( indices, indicesNew, sizeof(index_t) * nFaces * 3 );
}
return S_OK;
}
};
namespace DirectX
{
//=====================================================================================
// Entry-points
//=====================================================================================
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT Clean( uint16_t* indices, size_t nFaces, size_t nVerts, uint32_t* adjacency, const uint32_t* attributes,
std::vector<uint32_t>& dupVerts, bool breakBowties )
{
HRESULT hr = Validate( indices, nFaces, nVerts, adjacency, VALIDATE_DEFAULT );
if ( FAILED(hr) )
return hr;
return _Clean<uint16_t>( indices, nFaces, nVerts, adjacency, attributes, dupVerts, breakBowties );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT Clean( uint32_t* indices, size_t nFaces, size_t nVerts, uint32_t* adjacency, const uint32_t* attributes,
std::vector<uint32_t>& dupVerts, bool breakBowties )
{
HRESULT hr = Validate( indices, nFaces, nVerts, adjacency, VALIDATE_DEFAULT );
if ( FAILED(hr) )
return hr;
return _Clean<uint32_t>( indices, nFaces, nVerts, adjacency, attributes, dupVerts, breakBowties );
}
} // namespace

Просмотреть файл

@ -1,153 +1,153 @@
//-------------------------------------------------------------------------------------
// DirectXMeshGSAdjacency.cpp
//
// DirectX Mesh Geometry Library - Geometry Shader adjacency computation
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
//
// Generates an IB triangle list with adjacency (D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ)
// http://msdn.microsoft.com/en-us/library/windows/desktop/bb205124.aspx
//
namespace DirectX
{
template<class index_t>
HRESULT _GenerateGSAdjacency( _In_reads_(nFaces*3) const index_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* pointRep,
_In_reads_(nFaces*3) const uint32_t* adjacency, _In_ size_t nVerts,
_Out_writes_(nFaces*6) index_t* indicesAdj )
{
if ( !indices || !nFaces || !pointRep || !adjacency || !nVerts || !indicesAdj )
return E_INVALIDARG;
if ( nVerts >= index_t(-1) )
return E_INVALIDARG;
if ( indices == indicesAdj )
{
// Does not support in-place conversion of the index buffer
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED);
}
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
size_t inputi = 0;
size_t outputi = 0;
for( size_t face = 0; face < nFaces; ++face )
{
for( uint32_t point = 0; point < 3; ++point )
{
assert( outputi < (nFaces*6) );
_Analysis_assume_( outputi < (nFaces*6) );
indicesAdj[ outputi ] = indices[ inputi ];
++outputi;
++inputi;
assert( outputi < (nFaces*6) );
_Analysis_assume_( outputi < (nFaces*6) );
uint32_t a = adjacency[ face * 3 + point ];
if ( a == UNUSED32 )
{
indicesAdj[ outputi ] = indices[ face * 3 + ( ( point+2 ) % 3 ) ];
}
else
{
uint32_t v1 = indices[ face * 3 + point ];
uint32_t v2 = indices[ face * 3 + ( ( point + 1 ) % 3 ) ];
if ( v1 == index_t(-1) || v2 == index_t(-1) )
{
indicesAdj[ outputi ] = index_t(-1);
}
else
{
if ( v1 >= nVerts
|| v2 >= nVerts )
return E_UNEXPECTED;
v1 = pointRep[ v1 ];
v2 = pointRep[ v2 ];
uint32_t vOther = UNUSED32;
// find other vertex
for( uint32_t k = 0; k < 3; ++k )
{
assert( a < nFaces );
_Analysis_assume_( a < nFaces );
uint32_t ak = indices[ a * 3 + k ];
if ( ak == index_t(-1) )
break;
if ( ak >= nVerts )
return E_UNEXPECTED;
if ( pointRep[ ak ] == v1 )
continue;
if ( pointRep[ ak ] == v2 )
continue;
vOther = ak;
}
if ( vOther == UNUSED32 )
{
indicesAdj[ outputi ] = indices[ face * 3 + ( ( point+2 ) % 3 ) ];
}
else
{
indicesAdj[ outputi ] = index_t( vOther );
}
}
}
++outputi;
}
}
assert( inputi == ( nFaces * 3 ) );
assert( outputi == ( nFaces * 6 ) );
return S_OK;
}
//=====================================================================================
// Entry-points
//=====================================================================================
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT GenerateGSAdjacency( const uint16_t* indices, size_t nFaces, const uint32_t* pointRep, const uint32_t* adjacency, size_t nVerts,
uint16_t* indicesAdj )
{
return _GenerateGSAdjacency<uint16_t>( indices, nFaces, pointRep, adjacency, nVerts, indicesAdj );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT GenerateGSAdjacency( const uint32_t* indices, size_t nFaces, const uint32_t* pointRep, const uint32_t* adjacency, size_t nVerts,
uint32_t* indicesAdj )
{
return _GenerateGSAdjacency<uint32_t>( indices, nFaces, pointRep, adjacency, nVerts, indicesAdj );
}
//-------------------------------------------------------------------------------------
// DirectXMeshGSAdjacency.cpp
//
// DirectX Mesh Geometry Library - Geometry Shader adjacency computation
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
//
// Generates an IB triangle list with adjacency (D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ)
// http://msdn.microsoft.com/en-us/library/windows/desktop/bb205124.aspx
//
namespace DirectX
{
template<class index_t>
HRESULT _GenerateGSAdjacency( _In_reads_(nFaces*3) const index_t* indices, _In_ size_t nFaces,
_In_reads_(nVerts) const uint32_t* pointRep,
_In_reads_(nFaces*3) const uint32_t* adjacency, _In_ size_t nVerts,
_Out_writes_(nFaces*6) index_t* indicesAdj )
{
if ( !indices || !nFaces || !pointRep || !adjacency || !nVerts || !indicesAdj )
return E_INVALIDARG;
if ( nVerts >= index_t(-1) )
return E_INVALIDARG;
if ( indices == indicesAdj )
{
// Does not support in-place conversion of the index buffer
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED);
}
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
size_t inputi = 0;
size_t outputi = 0;
for( size_t face = 0; face < nFaces; ++face )
{
for( uint32_t point = 0; point < 3; ++point )
{
assert( outputi < (nFaces*6) );
_Analysis_assume_( outputi < (nFaces*6) );
indicesAdj[ outputi ] = indices[ inputi ];
++outputi;
++inputi;
assert( outputi < (nFaces*6) );
_Analysis_assume_( outputi < (nFaces*6) );
uint32_t a = adjacency[ face * 3 + point ];
if ( a == UNUSED32 )
{
indicesAdj[ outputi ] = indices[ face * 3 + ( ( point+2 ) % 3 ) ];
}
else
{
uint32_t v1 = indices[ face * 3 + point ];
uint32_t v2 = indices[ face * 3 + ( ( point + 1 ) % 3 ) ];
if ( v1 == index_t(-1) || v2 == index_t(-1) )
{
indicesAdj[ outputi ] = index_t(-1);
}
else
{
if ( v1 >= nVerts
|| v2 >= nVerts )
return E_UNEXPECTED;
v1 = pointRep[ v1 ];
v2 = pointRep[ v2 ];
uint32_t vOther = UNUSED32;
// find other vertex
for( uint32_t k = 0; k < 3; ++k )
{
assert( a < nFaces );
_Analysis_assume_( a < nFaces );
uint32_t ak = indices[ a * 3 + k ];
if ( ak == index_t(-1) )
break;
if ( ak >= nVerts )
return E_UNEXPECTED;
if ( pointRep[ ak ] == v1 )
continue;
if ( pointRep[ ak ] == v2 )
continue;
vOther = ak;
}
if ( vOther == UNUSED32 )
{
indicesAdj[ outputi ] = indices[ face * 3 + ( ( point+2 ) % 3 ) ];
}
else
{
indicesAdj[ outputi ] = index_t( vOther );
}
}
}
++outputi;
}
}
assert( inputi == ( nFaces * 3 ) );
assert( outputi == ( nFaces * 6 ) );
return S_OK;
}
//=====================================================================================
// Entry-points
//=====================================================================================
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT GenerateGSAdjacency( const uint16_t* indices, size_t nFaces, const uint32_t* pointRep, const uint32_t* adjacency, size_t nVerts,
uint16_t* indicesAdj )
{
return _GenerateGSAdjacency<uint16_t>( indices, nFaces, pointRep, adjacency, nVerts, indicesAdj );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT GenerateGSAdjacency( const uint32_t* indices, size_t nFaces, const uint32_t* pointRep, const uint32_t* adjacency, size_t nVerts,
uint32_t* indicesAdj )
{
return _GenerateGSAdjacency<uint32_t>( indices, nFaces, pointRep, adjacency, nVerts, indicesAdj );
}
} // namespace

Просмотреть файл

@ -1,335 +1,335 @@
//-------------------------------------------------------------------------------------
// DirectXMeshNormals.cpp
//
// DirectX Mesh Geometry Library - Normal computation
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
using namespace DirectX;
namespace
{
//-------------------------------------------------------------------------------------
// Compute normals with equal weighting
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT ComputeNormalsEqualWeight( _In_reads_(nFaces*3) const index_t* indices, size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, size_t nVerts,
bool cw, _Out_writes_(nVerts) XMFLOAT3* normals )
{
ScopedAlignedArrayXMVECTOR temp( reinterpret_cast<XMVECTOR*>( _aligned_malloc( sizeof(XMVECTOR) * nVerts, 16 ) ) );
if ( !temp )
return E_OUTOFMEMORY;
XMVECTOR* vertNormals = temp.get();
memset( vertNormals, 0, sizeof(XMVECTOR) * nVerts );
for( size_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
continue;
if ( i0 >= nVerts
|| i1 >= nVerts
|| i2 >= nVerts )
return E_UNEXPECTED;
XMVECTOR p1 = XMLoadFloat3( &positions[ i0 ] );
XMVECTOR p2 = XMLoadFloat3( &positions[ i1 ] );
XMVECTOR p3 = XMLoadFloat3( &positions[ i2 ] );
XMVECTOR u = p2 - p1;
XMVECTOR v = p3 - p1;
XMVECTOR faceNormal = XMVector3Normalize( XMVector3Cross( u, v ) );
vertNormals[ i0 ] = XMVectorAdd( vertNormals[ i0 ], faceNormal );
vertNormals[ i1 ] = XMVectorAdd( vertNormals[ i1 ], faceNormal );
vertNormals[ i2 ] = XMVectorAdd( vertNormals[ i2 ], faceNormal );
}
// Store results
if ( cw )
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
n = XMVectorNegate( n );
XMStoreFloat3( &normals[ vert ], n );
}
}
else
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
XMStoreFloat3( &normals[ vert ], n );
}
}
return S_OK;
}
//-------------------------------------------------------------------------------------
// Compute normals with weighting by angle
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT ComputeNormalsWeightedByAngle( _In_reads_(nFaces*3) const index_t* indices, size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, size_t nVerts,
bool cw, _Out_writes_(nVerts) XMFLOAT3* normals )
{
ScopedAlignedArrayXMVECTOR temp( reinterpret_cast<XMVECTOR*>( _aligned_malloc( sizeof(XMVECTOR) * nVerts, 16 ) ) );
if ( !temp )
return E_OUTOFMEMORY;
XMVECTOR* vertNormals = temp.get();
memset( vertNormals, 0, sizeof(XMVECTOR) * nVerts );
for( size_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
continue;
if ( i0 >= nVerts
|| i1 >= nVerts
|| i2 >= nVerts )
return E_UNEXPECTED;
XMVECTOR p0 = XMLoadFloat3( &positions[ i0 ] );
XMVECTOR p1 = XMLoadFloat3( &positions[ i1 ] );
XMVECTOR p2 = XMLoadFloat3( &positions[ i2 ] );
XMVECTOR u = p1 - p0;
XMVECTOR v = p2 - p0;
XMVECTOR faceNormal = XMVector3Normalize( XMVector3Cross( u, v ) );
// Corner 0 -> 1 - 0, 2 - 0
XMVECTOR a = XMVector3Normalize( u );
XMVECTOR b = XMVector3Normalize( v );
XMVECTOR w0 = XMVector3Dot( a, b );
w0 = XMVectorClamp( w0, g_XMNegativeOne, g_XMOne );
w0 = XMVectorACos( w0 );
// Corner 1 -> 2 - 1, 0 - 1
XMVECTOR c = XMVector3Normalize( p2 - p1 );
XMVECTOR d = XMVector3Normalize( p0 - p1 );
XMVECTOR w1 = XMVector3Dot( c, d );
w1 = XMVectorClamp( w1, g_XMNegativeOne, g_XMOne );
w1 = XMVectorACos( w1 );
// Corner 2 -> 0 - 2, 1 - 2
XMVECTOR e = XMVector3Normalize( p0 - p2 );
XMVECTOR f = XMVector3Normalize( p1 - p2 );
XMVECTOR w2 = XMVector3Dot( e, f );
w2 = XMVectorClamp( w2, g_XMNegativeOne, g_XMOne );
w2 = XMVectorACos( w2 );
vertNormals[ i0 ] = XMVectorMultiplyAdd( faceNormal, w0, vertNormals[ i0 ] );
vertNormals[ i1 ] = XMVectorMultiplyAdd( faceNormal, w1, vertNormals[ i1 ] );
vertNormals[ i2 ] = XMVectorMultiplyAdd( faceNormal, w2, vertNormals[ i2 ] );
}
// Store results
if ( cw )
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
n = XMVectorNegate( n );
XMStoreFloat3( &normals[ vert ], n );
}
}
else
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
XMStoreFloat3( &normals[ vert ], n );
}
}
return S_OK;
}
//-------------------------------------------------------------------------------------
// Compute normals with weighting by face area
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT ComputeNormalsWeightedByArea( _In_reads_(nFaces*3) const index_t* indices, size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, size_t nVerts,
bool cw, _Out_writes_(nVerts) XMFLOAT3* normals )
{
ScopedAlignedArrayXMVECTOR temp( reinterpret_cast<XMVECTOR*>( _aligned_malloc( sizeof(XMVECTOR) * nVerts, 16 ) ) );
if ( !temp )
return E_OUTOFMEMORY;
XMVECTOR* vertNormals = temp.get();
memset( vertNormals, 0, sizeof(XMVECTOR) * nVerts );
for( size_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
continue;
if ( i0 >= nVerts
|| i1 >= nVerts
|| i2 >= nVerts )
return E_UNEXPECTED;
XMVECTOR p0 = XMLoadFloat3( &positions[ i0 ] );
XMVECTOR p1 = XMLoadFloat3( &positions[ i1 ] );
XMVECTOR p2 = XMLoadFloat3( &positions[ i2 ] );
XMVECTOR u = p1 - p0;
XMVECTOR v = p2 - p0;
XMVECTOR faceNormal = XMVector3Normalize( XMVector3Cross( u, v ) );
// Corner 0 -> 1 - 0, 2 - 0
XMVECTOR w0 = XMVector3Cross( u, v );
w0 = XMVector3Length( w0 );
// Corner 1 -> 2 - 1, 0 - 1
XMVECTOR c = p2 - p1;
XMVECTOR d = p0 - p1;
XMVECTOR w1 = XMVector3Cross( c, d );
w1 = XMVector3Length( w1 );
// Corner 2 -> 0 - 2, 1 - 2
XMVECTOR e = p0 - p2;
XMVECTOR f = p1 - p2;
XMVECTOR w2 = XMVector3Cross( e, f );
w2 = XMVector3Length( w2 );
vertNormals[ i0 ] = XMVectorMultiplyAdd( faceNormal, w0, vertNormals[ i0 ] );
vertNormals[ i1 ] = XMVectorMultiplyAdd( faceNormal, w1, vertNormals[ i1 ] );
vertNormals[ i2 ] = XMVectorMultiplyAdd( faceNormal, w2, vertNormals[ i2 ] );
}
// Store results
if ( cw )
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
n = XMVectorNegate( n );
XMStoreFloat3( &normals[ vert ], n );
}
}
else
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
XMStoreFloat3( &normals[ vert ], n );
}
}
return S_OK;
}
};
namespace DirectX
{
//=====================================================================================
// Entry-points
//=====================================================================================
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeNormals( const uint16_t* indices, size_t nFaces,
const XMFLOAT3* positions, size_t nVerts,
DWORD flags,
XMFLOAT3* normals )
{
if ( !indices || !positions || !nFaces || !nVerts || !normals )
return E_INVALIDARG;
if ( nVerts >= UINT16_MAX )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
bool cw = (flags & CNORM_WIND_CW) ? true : false;
if ( flags & CNORM_WEIGHT_BY_AREA )
{
return ComputeNormalsWeightedByArea<uint16_t>( indices, nFaces, positions, nVerts, cw, normals );
}
else if ( flags & CNORM_WEIGHT_EQUAL )
{
return ComputeNormalsEqualWeight<uint16_t>( indices, nFaces, positions, nVerts, cw, normals );
}
else
{
return ComputeNormalsWeightedByAngle<uint16_t>( indices, nFaces, positions, nVerts, cw, normals );
}
}
_Use_decl_annotations_
HRESULT ComputeNormals( const uint32_t* indices, size_t nFaces,
const XMFLOAT3* positions, size_t nVerts,
DWORD flags,
XMFLOAT3* normals )
{
if ( !indices || !positions || !nFaces || !nVerts || !normals )
return E_INVALIDARG;
if ( nVerts >= UINT32_MAX )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
bool cw = (flags & CNORM_WIND_CW) ? true : false;
if ( flags & CNORM_WEIGHT_BY_AREA )
{
return ComputeNormalsWeightedByArea<uint32_t>( indices, nFaces, positions, nVerts, cw, normals );
}
else if ( flags & CNORM_WEIGHT_EQUAL )
{
return ComputeNormalsEqualWeight<uint32_t>( indices, nFaces, positions, nVerts, cw, normals );
}
else
{
return ComputeNormalsWeightedByAngle<uint32_t>( indices, nFaces, positions, nVerts, cw, normals );
}
}
//-------------------------------------------------------------------------------------
// DirectXMeshNormals.cpp
//
// DirectX Mesh Geometry Library - Normal computation
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
using namespace DirectX;
namespace
{
//-------------------------------------------------------------------------------------
// Compute normals with equal weighting
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT ComputeNormalsEqualWeight( _In_reads_(nFaces*3) const index_t* indices, size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, size_t nVerts,
bool cw, _Out_writes_(nVerts) XMFLOAT3* normals )
{
ScopedAlignedArrayXMVECTOR temp( reinterpret_cast<XMVECTOR*>( _aligned_malloc( sizeof(XMVECTOR) * nVerts, 16 ) ) );
if ( !temp )
return E_OUTOFMEMORY;
XMVECTOR* vertNormals = temp.get();
memset( vertNormals, 0, sizeof(XMVECTOR) * nVerts );
for( size_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
continue;
if ( i0 >= nVerts
|| i1 >= nVerts
|| i2 >= nVerts )
return E_UNEXPECTED;
XMVECTOR p1 = XMLoadFloat3( &positions[ i0 ] );
XMVECTOR p2 = XMLoadFloat3( &positions[ i1 ] );
XMVECTOR p3 = XMLoadFloat3( &positions[ i2 ] );
XMVECTOR u = p2 - p1;
XMVECTOR v = p3 - p1;
XMVECTOR faceNormal = XMVector3Normalize( XMVector3Cross( u, v ) );
vertNormals[ i0 ] = XMVectorAdd( vertNormals[ i0 ], faceNormal );
vertNormals[ i1 ] = XMVectorAdd( vertNormals[ i1 ], faceNormal );
vertNormals[ i2 ] = XMVectorAdd( vertNormals[ i2 ], faceNormal );
}
// Store results
if ( cw )
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
n = XMVectorNegate( n );
XMStoreFloat3( &normals[ vert ], n );
}
}
else
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
XMStoreFloat3( &normals[ vert ], n );
}
}
return S_OK;
}
//-------------------------------------------------------------------------------------
// Compute normals with weighting by angle
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT ComputeNormalsWeightedByAngle( _In_reads_(nFaces*3) const index_t* indices, size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, size_t nVerts,
bool cw, _Out_writes_(nVerts) XMFLOAT3* normals )
{
ScopedAlignedArrayXMVECTOR temp( reinterpret_cast<XMVECTOR*>( _aligned_malloc( sizeof(XMVECTOR) * nVerts, 16 ) ) );
if ( !temp )
return E_OUTOFMEMORY;
XMVECTOR* vertNormals = temp.get();
memset( vertNormals, 0, sizeof(XMVECTOR) * nVerts );
for( size_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
continue;
if ( i0 >= nVerts
|| i1 >= nVerts
|| i2 >= nVerts )
return E_UNEXPECTED;
XMVECTOR p0 = XMLoadFloat3( &positions[ i0 ] );
XMVECTOR p1 = XMLoadFloat3( &positions[ i1 ] );
XMVECTOR p2 = XMLoadFloat3( &positions[ i2 ] );
XMVECTOR u = p1 - p0;
XMVECTOR v = p2 - p0;
XMVECTOR faceNormal = XMVector3Normalize( XMVector3Cross( u, v ) );
// Corner 0 -> 1 - 0, 2 - 0
XMVECTOR a = XMVector3Normalize( u );
XMVECTOR b = XMVector3Normalize( v );
XMVECTOR w0 = XMVector3Dot( a, b );
w0 = XMVectorClamp( w0, g_XMNegativeOne, g_XMOne );
w0 = XMVectorACos( w0 );
// Corner 1 -> 2 - 1, 0 - 1
XMVECTOR c = XMVector3Normalize( p2 - p1 );
XMVECTOR d = XMVector3Normalize( p0 - p1 );
XMVECTOR w1 = XMVector3Dot( c, d );
w1 = XMVectorClamp( w1, g_XMNegativeOne, g_XMOne );
w1 = XMVectorACos( w1 );
// Corner 2 -> 0 - 2, 1 - 2
XMVECTOR e = XMVector3Normalize( p0 - p2 );
XMVECTOR f = XMVector3Normalize( p1 - p2 );
XMVECTOR w2 = XMVector3Dot( e, f );
w2 = XMVectorClamp( w2, g_XMNegativeOne, g_XMOne );
w2 = XMVectorACos( w2 );
vertNormals[ i0 ] = XMVectorMultiplyAdd( faceNormal, w0, vertNormals[ i0 ] );
vertNormals[ i1 ] = XMVectorMultiplyAdd( faceNormal, w1, vertNormals[ i1 ] );
vertNormals[ i2 ] = XMVectorMultiplyAdd( faceNormal, w2, vertNormals[ i2 ] );
}
// Store results
if ( cw )
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
n = XMVectorNegate( n );
XMStoreFloat3( &normals[ vert ], n );
}
}
else
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
XMStoreFloat3( &normals[ vert ], n );
}
}
return S_OK;
}
//-------------------------------------------------------------------------------------
// Compute normals with weighting by face area
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT ComputeNormalsWeightedByArea( _In_reads_(nFaces*3) const index_t* indices, size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions, size_t nVerts,
bool cw, _Out_writes_(nVerts) XMFLOAT3* normals )
{
ScopedAlignedArrayXMVECTOR temp( reinterpret_cast<XMVECTOR*>( _aligned_malloc( sizeof(XMVECTOR) * nVerts, 16 ) ) );
if ( !temp )
return E_OUTOFMEMORY;
XMVECTOR* vertNormals = temp.get();
memset( vertNormals, 0, sizeof(XMVECTOR) * nVerts );
for( size_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
continue;
if ( i0 >= nVerts
|| i1 >= nVerts
|| i2 >= nVerts )
return E_UNEXPECTED;
XMVECTOR p0 = XMLoadFloat3( &positions[ i0 ] );
XMVECTOR p1 = XMLoadFloat3( &positions[ i1 ] );
XMVECTOR p2 = XMLoadFloat3( &positions[ i2 ] );
XMVECTOR u = p1 - p0;
XMVECTOR v = p2 - p0;
XMVECTOR faceNormal = XMVector3Normalize( XMVector3Cross( u, v ) );
// Corner 0 -> 1 - 0, 2 - 0
XMVECTOR w0 = XMVector3Cross( u, v );
w0 = XMVector3Length( w0 );
// Corner 1 -> 2 - 1, 0 - 1
XMVECTOR c = p2 - p1;
XMVECTOR d = p0 - p1;
XMVECTOR w1 = XMVector3Cross( c, d );
w1 = XMVector3Length( w1 );
// Corner 2 -> 0 - 2, 1 - 2
XMVECTOR e = p0 - p2;
XMVECTOR f = p1 - p2;
XMVECTOR w2 = XMVector3Cross( e, f );
w2 = XMVector3Length( w2 );
vertNormals[ i0 ] = XMVectorMultiplyAdd( faceNormal, w0, vertNormals[ i0 ] );
vertNormals[ i1 ] = XMVectorMultiplyAdd( faceNormal, w1, vertNormals[ i1 ] );
vertNormals[ i2 ] = XMVectorMultiplyAdd( faceNormal, w2, vertNormals[ i2 ] );
}
// Store results
if ( cw )
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
n = XMVectorNegate( n );
XMStoreFloat3( &normals[ vert ], n );
}
}
else
{
for( size_t vert = 0; vert < nVerts; ++vert )
{
XMVECTOR n = XMVector3Normalize( vertNormals[ vert ] );
XMStoreFloat3( &normals[ vert ], n );
}
}
return S_OK;
}
};
namespace DirectX
{
//=====================================================================================
// Entry-points
//=====================================================================================
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeNormals( const uint16_t* indices, size_t nFaces,
const XMFLOAT3* positions, size_t nVerts,
DWORD flags,
XMFLOAT3* normals )
{
if ( !indices || !positions || !nFaces || !nVerts || !normals )
return E_INVALIDARG;
if ( nVerts >= UINT16_MAX )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
bool cw = (flags & CNORM_WIND_CW) ? true : false;
if ( flags & CNORM_WEIGHT_BY_AREA )
{
return ComputeNormalsWeightedByArea<uint16_t>( indices, nFaces, positions, nVerts, cw, normals );
}
else if ( flags & CNORM_WEIGHT_EQUAL )
{
return ComputeNormalsEqualWeight<uint16_t>( indices, nFaces, positions, nVerts, cw, normals );
}
else
{
return ComputeNormalsWeightedByAngle<uint16_t>( indices, nFaces, positions, nVerts, cw, normals );
}
}
_Use_decl_annotations_
HRESULT ComputeNormals( const uint32_t* indices, size_t nFaces,
const XMFLOAT3* positions, size_t nVerts,
DWORD flags,
XMFLOAT3* normals )
{
if ( !indices || !positions || !nFaces || !nVerts || !normals )
return E_INVALIDARG;
if ( nVerts >= UINT32_MAX )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
bool cw = (flags & CNORM_WIND_CW) ? true : false;
if ( flags & CNORM_WEIGHT_BY_AREA )
{
return ComputeNormalsWeightedByArea<uint32_t>( indices, nFaces, positions, nVerts, cw, normals );
}
else if ( flags & CNORM_WEIGHT_EQUAL )
{
return ComputeNormalsEqualWeight<uint32_t>( indices, nFaces, positions, nVerts, cw, normals );
}
else
{
return ComputeNormalsWeightedByAngle<uint32_t>( indices, nFaces, positions, nVerts, cw, normals );
}
}
} // namespace

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,289 +1,289 @@
//-------------------------------------------------------------------------------------
// DirectXMeshP.h
//
// DirectX Mesh Geometry Library
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#pragma once
#pragma warning(push)
#pragma warning(disable : 4005)
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
#define NODRAWTEXT
#define NOGDI
#define NOBITMAP
#define NOMCX
#define NOSERVICE
#define NOHELP
#pragma warning(pop)
#include <windows.h>
#include <directxmath.h>
#include <directxpackedvector.h>
#include <assert.h>
#include <malloc.h>
#include <algorithm>
#include <map>
#include <string>
#include <unordered_map>
#include "directxmesh.h"
#include "scoped.h"
#ifndef XBOX_DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM
#define XBOX_DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM DXGI_FORMAT(189)
#endif
namespace DirectX
{
//---------------------------------------------------------------------------------
const uint32_t UNUSED32 = uint32_t(-1);
static_assert( D3D11_16BIT_INDEX_STRIP_CUT_VALUE == uint16_t(-1), "Mismatch with Direct3D11" );
static_assert( D3D11_16BIT_INDEX_STRIP_CUT_VALUE == UINT16_MAX, "Mismatch with Direct3D11" );
static_assert( D3D11_32BIT_INDEX_STRIP_CUT_VALUE == uint32_t(-1), "Mismatch with Direct3D11" );
static_assert( D3D11_32BIT_INDEX_STRIP_CUT_VALUE == UINT32_MAX, "Mismatch with Direct3D11" );
//---------------------------------------------------------------------------------
// Utility for walking adjacency
//---------------------------------------------------------------------------------
template<class index_t>
class orbit_iterator
{
public:
enum WalkType
{
ALL = 0,
CW,
CCW
};
orbit_iterator( _In_reads_(nFaces*3) const uint32_t* adjacency, _In_reads_(nFaces*3) const index_t* indices, size_t nFaces ) :
m_face(UNUSED32),
m_pointIndex(UNUSED32),
m_currentFace(UNUSED32),
m_currentEdge(UNUSED32),
m_nextEdge(UNUSED32),
m_adjacency(adjacency),
m_indices(indices),
m_nFaces(nFaces),
m_clockWise(false),
m_stopOnBoundary(false) {}
void initialize( uint32_t face, uint32_t point, WalkType wtype )
{
m_face = m_currentFace = face;
m_pointIndex = point;
m_clockWise = ( wtype != CCW );
m_stopOnBoundary = ( wtype != ALL );
m_nextEdge = find( face, point );
assert( m_nextEdge < 3 );
_Analysis_assume_( m_nextEdge < 3 );
if ( !m_clockWise )
{
m_nextEdge = ( m_nextEdge + 2 ) % 3;
}
m_currentEdge = m_nextEdge;
}
uint32_t find( uint32_t face, uint32_t point )
{
assert( face < m_nFaces );
_Analysis_assume_( face < m_nFaces );
if ( m_indices[ face*3 ] == point )
return 0;
else if ( m_indices[ face*3 + 1 ] == point )
return 1;
else
{
assert( m_indices[ face*3 + 2 ] == point );
return 2;
}
}
uint32_t nextFace()
{
assert( !done() );
uint32_t ret = m_currentFace;
m_currentEdge = m_nextEdge;
for(;;)
{
uint32_t prevFace = m_currentFace;
assert( ( m_currentFace * 3 + m_nextEdge ) < ( m_nFaces * 3) );
_Analysis_assume_( ( m_currentFace * 3 + m_nextEdge ) < ( m_nFaces * 3) );
m_currentFace = m_adjacency[ m_currentFace * 3 + m_nextEdge ];
if ( m_currentFace == m_face )
{
// wrapped around after a full orbit, so finished
m_currentFace = UNUSED32;
break;
}
else if ( m_currentFace != UNUSED32 )
{
assert( ( m_currentFace * 3 + 2 ) < ( m_nFaces * 3) );
_Analysis_assume_( ( m_currentFace * 3 + 2 ) < ( m_nFaces * 3) );
if ( m_adjacency[ m_currentFace * 3 ] == prevFace )
m_nextEdge = 0;
else if ( m_adjacency[ m_currentFace * 3 + 1 ] == prevFace )
m_nextEdge = 1;
else
{
assert( m_adjacency[ m_currentFace * 3 + 2 ] == prevFace );
m_nextEdge = 2;
}
if ( m_clockWise )
{
m_nextEdge = ( m_nextEdge + 1 ) % 3;
}
else
{
m_nextEdge = ( m_nextEdge + 2 ) % 3;
}
break;
}
else if ( m_clockWise && !m_stopOnBoundary )
{
// hit boundary and need to restart to go counter-clockwise
m_clockWise = false;
m_currentFace = m_face;
m_nextEdge = find( m_face, m_pointIndex );
assert( m_nextEdge < 3 );
_Analysis_assume_( m_nextEdge < 3 );
m_nextEdge = ( m_nextEdge + 2 ) % 3;
m_currentEdge = ( m_currentEdge + 2 ) %3;
// Don't break out of loop so we can go the other way
}
else
{
// hit boundary and should stop
break;
}
}
return ret;
}
bool moveToCCW()
{
m_currentFace = m_face;
m_nextEdge = find( m_currentFace, m_pointIndex );
uint32_t initialNextEdge = m_nextEdge;
assert( m_nextEdge < 3 );
_Analysis_assume_( m_nextEdge < 3 );
m_nextEdge = ( m_nextEdge + 2 ) % 3;
bool ret = false;
uint32_t prevFace;
do
{
prevFace = m_currentFace;
m_currentFace = m_adjacency[ m_currentFace * 3 + m_nextEdge ];
if ( m_currentFace != UNUSED32 )
{
if ( m_adjacency[ m_currentFace * 3 ] == prevFace )
m_nextEdge = 0;
else if ( m_adjacency[ m_currentFace * 3 + 1 ] == prevFace )
m_nextEdge = 1;
else
{
assert( m_adjacency[ m_currentFace * 3 + 2 ] == prevFace );
m_nextEdge = 2;
}
m_nextEdge = ( m_nextEdge + 2 ) % 3;
}
}
while ( (m_currentFace != m_face) && (m_currentFace != UNUSED32 ) );
if ( m_currentFace == UNUSED32 )
{
m_currentFace = prevFace;
m_nextEdge = ( m_nextEdge + 1 ) % 3;
m_pointIndex = m_indices[ m_currentFace * 3 + m_nextEdge ];
ret = true;
}
else
{
m_nextEdge = initialNextEdge;
}
m_clockWise = true;
m_currentEdge = m_nextEdge;
m_face = m_currentFace;
return ret;
}
bool done() const { return ( m_currentFace == UNUSED32 ); };
uint32_t getpoint() const { return m_clockWise ? m_currentEdge : ( ( m_currentEdge + 1 ) % 3 ); };
private:
uint32_t m_face;
uint32_t m_pointIndex;
uint32_t m_currentFace;
uint32_t m_currentEdge;
uint32_t m_nextEdge;
const uint32_t* m_adjacency;
const index_t* m_indices;
size_t m_nFaces;
bool m_clockWise;
bool m_stopOnBoundary;
};
//-------------------------------------------------------------------------------------
template<class index_t>
inline uint32_t find_edge( _In_reads_(3) const index_t* indices, index_t search )
{
assert( indices != 0 );
uint32_t edge = 0;
for( ; edge < 3; ++edge )
{
if ( indices[ edge ] == search )
break;
}
return edge;
}
}; // namespace
//-------------------------------------------------------------------------------------
// DirectXMeshP.h
//
// DirectX Mesh Geometry Library
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#pragma once
#pragma warning(push)
#pragma warning(disable : 4005)
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
#define NODRAWTEXT
#define NOGDI
#define NOBITMAP
#define NOMCX
#define NOSERVICE
#define NOHELP
#pragma warning(pop)
#include <windows.h>
#include <directxmath.h>
#include <directxpackedvector.h>
#include <assert.h>
#include <malloc.h>
#include <algorithm>
#include <map>
#include <string>
#include <unordered_map>
#include "directxmesh.h"
#include "scoped.h"
#ifndef XBOX_DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM
#define XBOX_DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM DXGI_FORMAT(189)
#endif
namespace DirectX
{
//---------------------------------------------------------------------------------
const uint32_t UNUSED32 = uint32_t(-1);
static_assert( D3D11_16BIT_INDEX_STRIP_CUT_VALUE == uint16_t(-1), "Mismatch with Direct3D11" );
static_assert( D3D11_16BIT_INDEX_STRIP_CUT_VALUE == UINT16_MAX, "Mismatch with Direct3D11" );
static_assert( D3D11_32BIT_INDEX_STRIP_CUT_VALUE == uint32_t(-1), "Mismatch with Direct3D11" );
static_assert( D3D11_32BIT_INDEX_STRIP_CUT_VALUE == UINT32_MAX, "Mismatch with Direct3D11" );
//---------------------------------------------------------------------------------
// Utility for walking adjacency
//---------------------------------------------------------------------------------
template<class index_t>
class orbit_iterator
{
public:
enum WalkType
{
ALL = 0,
CW,
CCW
};
orbit_iterator( _In_reads_(nFaces*3) const uint32_t* adjacency, _In_reads_(nFaces*3) const index_t* indices, size_t nFaces ) :
m_face(UNUSED32),
m_pointIndex(UNUSED32),
m_currentFace(UNUSED32),
m_currentEdge(UNUSED32),
m_nextEdge(UNUSED32),
m_adjacency(adjacency),
m_indices(indices),
m_nFaces(nFaces),
m_clockWise(false),
m_stopOnBoundary(false) {}
void initialize( uint32_t face, uint32_t point, WalkType wtype )
{
m_face = m_currentFace = face;
m_pointIndex = point;
m_clockWise = ( wtype != CCW );
m_stopOnBoundary = ( wtype != ALL );
m_nextEdge = find( face, point );
assert( m_nextEdge < 3 );
_Analysis_assume_( m_nextEdge < 3 );
if ( !m_clockWise )
{
m_nextEdge = ( m_nextEdge + 2 ) % 3;
}
m_currentEdge = m_nextEdge;
}
uint32_t find( uint32_t face, uint32_t point )
{
assert( face < m_nFaces );
_Analysis_assume_( face < m_nFaces );
if ( m_indices[ face*3 ] == point )
return 0;
else if ( m_indices[ face*3 + 1 ] == point )
return 1;
else
{
assert( m_indices[ face*3 + 2 ] == point );
return 2;
}
}
uint32_t nextFace()
{
assert( !done() );
uint32_t ret = m_currentFace;
m_currentEdge = m_nextEdge;
for(;;)
{
uint32_t prevFace = m_currentFace;
assert( ( m_currentFace * 3 + m_nextEdge ) < ( m_nFaces * 3) );
_Analysis_assume_( ( m_currentFace * 3 + m_nextEdge ) < ( m_nFaces * 3) );
m_currentFace = m_adjacency[ m_currentFace * 3 + m_nextEdge ];
if ( m_currentFace == m_face )
{
// wrapped around after a full orbit, so finished
m_currentFace = UNUSED32;
break;
}
else if ( m_currentFace != UNUSED32 )
{
assert( ( m_currentFace * 3 + 2 ) < ( m_nFaces * 3) );
_Analysis_assume_( ( m_currentFace * 3 + 2 ) < ( m_nFaces * 3) );
if ( m_adjacency[ m_currentFace * 3 ] == prevFace )
m_nextEdge = 0;
else if ( m_adjacency[ m_currentFace * 3 + 1 ] == prevFace )
m_nextEdge = 1;
else
{
assert( m_adjacency[ m_currentFace * 3 + 2 ] == prevFace );
m_nextEdge = 2;
}
if ( m_clockWise )
{
m_nextEdge = ( m_nextEdge + 1 ) % 3;
}
else
{
m_nextEdge = ( m_nextEdge + 2 ) % 3;
}
break;
}
else if ( m_clockWise && !m_stopOnBoundary )
{
// hit boundary and need to restart to go counter-clockwise
m_clockWise = false;
m_currentFace = m_face;
m_nextEdge = find( m_face, m_pointIndex );
assert( m_nextEdge < 3 );
_Analysis_assume_( m_nextEdge < 3 );
m_nextEdge = ( m_nextEdge + 2 ) % 3;
m_currentEdge = ( m_currentEdge + 2 ) %3;
// Don't break out of loop so we can go the other way
}
else
{
// hit boundary and should stop
break;
}
}
return ret;
}
bool moveToCCW()
{
m_currentFace = m_face;
m_nextEdge = find( m_currentFace, m_pointIndex );
uint32_t initialNextEdge = m_nextEdge;
assert( m_nextEdge < 3 );
_Analysis_assume_( m_nextEdge < 3 );
m_nextEdge = ( m_nextEdge + 2 ) % 3;
bool ret = false;
uint32_t prevFace;
do
{
prevFace = m_currentFace;
m_currentFace = m_adjacency[ m_currentFace * 3 + m_nextEdge ];
if ( m_currentFace != UNUSED32 )
{
if ( m_adjacency[ m_currentFace * 3 ] == prevFace )
m_nextEdge = 0;
else if ( m_adjacency[ m_currentFace * 3 + 1 ] == prevFace )
m_nextEdge = 1;
else
{
assert( m_adjacency[ m_currentFace * 3 + 2 ] == prevFace );
m_nextEdge = 2;
}
m_nextEdge = ( m_nextEdge + 2 ) % 3;
}
}
while ( (m_currentFace != m_face) && (m_currentFace != UNUSED32 ) );
if ( m_currentFace == UNUSED32 )
{
m_currentFace = prevFace;
m_nextEdge = ( m_nextEdge + 1 ) % 3;
m_pointIndex = m_indices[ m_currentFace * 3 + m_nextEdge ];
ret = true;
}
else
{
m_nextEdge = initialNextEdge;
}
m_clockWise = true;
m_currentEdge = m_nextEdge;
m_face = m_currentFace;
return ret;
}
bool done() const { return ( m_currentFace == UNUSED32 ); };
uint32_t getpoint() const { return m_clockWise ? m_currentEdge : ( ( m_currentEdge + 1 ) % 3 ); };
private:
uint32_t m_face;
uint32_t m_pointIndex;
uint32_t m_currentFace;
uint32_t m_currentEdge;
uint32_t m_nextEdge;
const uint32_t* m_adjacency;
const index_t* m_indices;
size_t m_nFaces;
bool m_clockWise;
bool m_stopOnBoundary;
};
//-------------------------------------------------------------------------------------
template<class index_t>
inline uint32_t find_edge( _In_reads_(3) const index_t* indices, index_t search )
{
assert( indices != 0 );
uint32_t edge = 0;
for( ; edge < 3; ++edge )
{
if ( indices[ edge ] == search )
break;
}
return edge;
}
}; // namespace

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,277 +1,277 @@
//-------------------------------------------------------------------------------------
// DirectXMeshTangentFrame.cpp
//
// DirectX Mesh Geometry Library - Normals, Tangents, and Bi-Tangents Computation
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
using namespace DirectX;
namespace
{
//-------------------------------------------------------------------------------------
// Compute normals with equal weighting
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT _ComputeTangentFrame( _In_reads_(nFaces*3) const index_t* indices, size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords,
size_t nVerts,
_Out_writes_opt_(nVerts) XMFLOAT3* tangents3,
_Out_writes_opt_(nVerts) XMFLOAT4* tangents4,
_Out_writes_opt_(nVerts) XMFLOAT3* bitangents )
{
if ( !indices || !nFaces || !positions || !normals || !texcoords || !nVerts )
return E_INVALIDARG;
if ( nVerts >= index_t(-1) )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
static const float EPSILON = 0.0001f;
static const XMVECTORF32 s_flips = { 1.f, -1.f, -1.f, 1.f };
ScopedAlignedArrayXMVECTOR temp( reinterpret_cast<XMVECTOR*>( _aligned_malloc( sizeof(XMVECTOR) * nVerts * 2, 16 ) ) );
if ( !temp )
return E_OUTOFMEMORY;
memset( temp.get(), 0, sizeof(XMVECTOR) * nVerts * 2 );
XMVECTOR* tangent1 = temp.get();
XMVECTOR* tangent2 = temp.get() + nVerts;
for( size_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
continue;
if ( i0 >= nVerts
|| i1 >= nVerts
|| i2 >= nVerts )
return E_UNEXPECTED;
XMVECTOR t0 = XMLoadFloat2( &texcoords[ i0 ] );
XMVECTOR t1 = XMLoadFloat2( &texcoords[ i1 ] );
XMVECTOR t2 = XMLoadFloat2( &texcoords[ i2 ] );
XMVECTOR s = XMVectorMergeXY( t1 - t0, t2 - t0 );
XMFLOAT4A tmp;
XMStoreFloat4A( &tmp, s );
float d = tmp.x * tmp.w - tmp.z * tmp.y;
d = ( fabsf( d ) <= EPSILON ) ? 1.f : ( 1.f / d );
s *= d;
s = XMVectorMultiply( s, s_flips );
XMMATRIX m0;
m0.r[0] = XMVectorPermute<3,2,6,7>( s, g_XMZero );
m0.r[1] = XMVectorPermute<1,0,4,5>( s, g_XMZero );
m0.r[2] = m0.r[3] = g_XMZero;
XMVECTOR p0 = XMLoadFloat3( &positions[ i0 ] );
XMVECTOR p1 = XMLoadFloat3( &positions[ i1 ] );
XMVECTOR p2 = XMLoadFloat3( &positions[ i2 ] );
XMMATRIX m1;
m1.r[0] = p1 - p0;
m1.r[1] = p2 - p0;
m1.r[2] = m1.r[3] = g_XMZero;
XMMATRIX uv = XMMatrixMultiply( m0, m1 );
tangent1[ i0 ] = XMVectorAdd( tangent1[ i0 ], uv.r[0] );
tangent1[ i1 ] = XMVectorAdd( tangent1[ i1 ], uv.r[0] );
tangent1[ i2 ] = XMVectorAdd( tangent1[ i2 ], uv.r[0] );
tangent2[ i0 ] = XMVectorAdd( tangent2[ i0 ], uv.r[1] );
tangent2[ i1 ] = XMVectorAdd( tangent2[ i1 ], uv.r[1] );
tangent2[ i2 ] = XMVectorAdd( tangent2[ i2 ], uv.r[1] );
}
for( size_t j = 0; j < nVerts; ++j )
{
// Gram-Schmidt orthonormalization
XMVECTOR b0 = XMLoadFloat3( &normals[ j ] );
b0 = XMVector3Normalize( b0 );
XMVECTOR tan1 = tangent1[ j ];
XMVECTOR b1 = tan1 - XMVector3Dot( b0, tan1 ) * b0;
b1 = XMVector3Normalize( b1 );
XMVECTOR tan2 = tangent2[ j ];
XMVECTOR b2 = tan2 - XMVector3Dot( b0, tan2 ) * b0 - XMVector3Dot( b1, tan2 ) * b1;
b2 = XMVector3Normalize( b2 );
// handle degenerate vectors
float len1 = XMVectorGetX( XMVector3Length( b1 ) );
float len2 = XMVectorGetY( XMVector3Length( b2 ) );
if ( ( len1 <= EPSILON ) || ( len2 <= EPSILON ) )
{
if ( len1 > 0.5f )
{
// Reset bi-tangent from tangent and normal
b2 = XMVector3Cross( b0, b1 );
}
else if ( len2 > 0.5f )
{
// Reset tangent from bi-tangent and normal
b1 = XMVector3Cross( b2, b0 );
}
else
{
// Reset both tangent and bi-tangent from normal
XMVECTOR axis;
float d0 = fabs( XMVectorGetX( XMVector3Dot( g_XMIdentityR0, b0 ) ) );
float d1 = fabs( XMVectorGetX( XMVector3Dot( g_XMIdentityR1, b0 ) ) );
float d2 = fabs( XMVectorGetX( XMVector3Dot( g_XMIdentityR2, b0 ) ) );
if ( d0 < d1 )
{
axis = ( d0 < d2 ) ? g_XMIdentityR0 : g_XMIdentityR2;
}
else if ( d1 < d2 )
{
axis = g_XMIdentityR1;
}
else
{
axis = g_XMIdentityR2;
}
b1 = XMVector3Cross( b0, axis );
b2 = XMVector3Cross( b0, b1 );
}
}
if ( tangents3 )
{
XMStoreFloat3( &tangents3[ j ], b1 );
}
if ( tangents4 )
{
XMVECTOR bi = XMVector3Cross( b0, tan1 );
float w = XMVector3Less( XMVector3Dot( bi, tan2 ), g_XMZero ) ? -1.f : 1.f;
bi = XMVectorSetW( b1, w );
XMStoreFloat4( &tangents4[ j ], bi );
}
if ( bitangents )
{
XMStoreFloat3( &bitangents[ j ], b2 );
}
}
return S_OK;
}
};
namespace DirectX
{
//=====================================================================================
// Entry-points
//=====================================================================================
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint16_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT3* tangents, XMFLOAT3* bitangents )
{
if ( !tangents && !bitangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint16_t>( indices, nFaces, positions, normals, texcoords, nVerts, tangents, nullptr, bitangents );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint32_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT3* tangents, XMFLOAT3* bitangents )
{
if ( !tangents && !bitangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint32_t>( indices, nFaces, positions, normals, texcoords, nVerts, tangents, nullptr, bitangents );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint16_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT4* tangents, XMFLOAT3* bitangents )
{
if ( !tangents && !bitangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint16_t>( indices, nFaces, positions, normals, texcoords, nVerts, nullptr, tangents, bitangents );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint32_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT4* tangents, XMFLOAT3* bitangents )
{
if ( !tangents && !bitangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint32_t>( indices, nFaces, positions, normals, texcoords, nVerts, nullptr, tangents, bitangents );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint16_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT4* tangents )
{
if ( !tangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint16_t>( indices, nFaces, positions, normals, texcoords, nVerts, nullptr, tangents, nullptr );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint32_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT4* tangents )
{
if ( !tangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint32_t>( indices, nFaces, positions, normals, texcoords, nVerts, nullptr, tangents, nullptr );
}
//-------------------------------------------------------------------------------------
// DirectXMeshTangentFrame.cpp
//
// DirectX Mesh Geometry Library - Normals, Tangents, and Bi-Tangents Computation
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
using namespace DirectX;
namespace
{
//-------------------------------------------------------------------------------------
// Compute normals with equal weighting
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT _ComputeTangentFrame( _In_reads_(nFaces*3) const index_t* indices, size_t nFaces,
_In_reads_(nVerts) const XMFLOAT3* positions,
_In_reads_(nVerts) const XMFLOAT3* normals,
_In_reads_(nVerts) const XMFLOAT2* texcoords,
size_t nVerts,
_Out_writes_opt_(nVerts) XMFLOAT3* tangents3,
_Out_writes_opt_(nVerts) XMFLOAT4* tangents4,
_Out_writes_opt_(nVerts) XMFLOAT3* bitangents )
{
if ( !indices || !nFaces || !positions || !normals || !texcoords || !nVerts )
return E_INVALIDARG;
if ( nVerts >= index_t(-1) )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
static const float EPSILON = 0.0001f;
static const XMVECTORF32 s_flips = { 1.f, -1.f, -1.f, 1.f };
ScopedAlignedArrayXMVECTOR temp( reinterpret_cast<XMVECTOR*>( _aligned_malloc( sizeof(XMVECTOR) * nVerts * 2, 16 ) ) );
if ( !temp )
return E_OUTOFMEMORY;
memset( temp.get(), 0, sizeof(XMVECTOR) * nVerts * 2 );
XMVECTOR* tangent1 = temp.get();
XMVECTOR* tangent2 = temp.get() + nVerts;
for( size_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
continue;
if ( i0 >= nVerts
|| i1 >= nVerts
|| i2 >= nVerts )
return E_UNEXPECTED;
XMVECTOR t0 = XMLoadFloat2( &texcoords[ i0 ] );
XMVECTOR t1 = XMLoadFloat2( &texcoords[ i1 ] );
XMVECTOR t2 = XMLoadFloat2( &texcoords[ i2 ] );
XMVECTOR s = XMVectorMergeXY( t1 - t0, t2 - t0 );
XMFLOAT4A tmp;
XMStoreFloat4A( &tmp, s );
float d = tmp.x * tmp.w - tmp.z * tmp.y;
d = ( fabsf( d ) <= EPSILON ) ? 1.f : ( 1.f / d );
s *= d;
s = XMVectorMultiply( s, s_flips );
XMMATRIX m0;
m0.r[0] = XMVectorPermute<3,2,6,7>( s, g_XMZero );
m0.r[1] = XMVectorPermute<1,0,4,5>( s, g_XMZero );
m0.r[2] = m0.r[3] = g_XMZero;
XMVECTOR p0 = XMLoadFloat3( &positions[ i0 ] );
XMVECTOR p1 = XMLoadFloat3( &positions[ i1 ] );
XMVECTOR p2 = XMLoadFloat3( &positions[ i2 ] );
XMMATRIX m1;
m1.r[0] = p1 - p0;
m1.r[1] = p2 - p0;
m1.r[2] = m1.r[3] = g_XMZero;
XMMATRIX uv = XMMatrixMultiply( m0, m1 );
tangent1[ i0 ] = XMVectorAdd( tangent1[ i0 ], uv.r[0] );
tangent1[ i1 ] = XMVectorAdd( tangent1[ i1 ], uv.r[0] );
tangent1[ i2 ] = XMVectorAdd( tangent1[ i2 ], uv.r[0] );
tangent2[ i0 ] = XMVectorAdd( tangent2[ i0 ], uv.r[1] );
tangent2[ i1 ] = XMVectorAdd( tangent2[ i1 ], uv.r[1] );
tangent2[ i2 ] = XMVectorAdd( tangent2[ i2 ], uv.r[1] );
}
for( size_t j = 0; j < nVerts; ++j )
{
// Gram-Schmidt orthonormalization
XMVECTOR b0 = XMLoadFloat3( &normals[ j ] );
b0 = XMVector3Normalize( b0 );
XMVECTOR tan1 = tangent1[ j ];
XMVECTOR b1 = tan1 - XMVector3Dot( b0, tan1 ) * b0;
b1 = XMVector3Normalize( b1 );
XMVECTOR tan2 = tangent2[ j ];
XMVECTOR b2 = tan2 - XMVector3Dot( b0, tan2 ) * b0 - XMVector3Dot( b1, tan2 ) * b1;
b2 = XMVector3Normalize( b2 );
// handle degenerate vectors
float len1 = XMVectorGetX( XMVector3Length( b1 ) );
float len2 = XMVectorGetY( XMVector3Length( b2 ) );
if ( ( len1 <= EPSILON ) || ( len2 <= EPSILON ) )
{
if ( len1 > 0.5f )
{
// Reset bi-tangent from tangent and normal
b2 = XMVector3Cross( b0, b1 );
}
else if ( len2 > 0.5f )
{
// Reset tangent from bi-tangent and normal
b1 = XMVector3Cross( b2, b0 );
}
else
{
// Reset both tangent and bi-tangent from normal
XMVECTOR axis;
float d0 = fabs( XMVectorGetX( XMVector3Dot( g_XMIdentityR0, b0 ) ) );
float d1 = fabs( XMVectorGetX( XMVector3Dot( g_XMIdentityR1, b0 ) ) );
float d2 = fabs( XMVectorGetX( XMVector3Dot( g_XMIdentityR2, b0 ) ) );
if ( d0 < d1 )
{
axis = ( d0 < d2 ) ? g_XMIdentityR0 : g_XMIdentityR2;
}
else if ( d1 < d2 )
{
axis = g_XMIdentityR1;
}
else
{
axis = g_XMIdentityR2;
}
b1 = XMVector3Cross( b0, axis );
b2 = XMVector3Cross( b0, b1 );
}
}
if ( tangents3 )
{
XMStoreFloat3( &tangents3[ j ], b1 );
}
if ( tangents4 )
{
XMVECTOR bi = XMVector3Cross( b0, tan1 );
float w = XMVector3Less( XMVector3Dot( bi, tan2 ), g_XMZero ) ? -1.f : 1.f;
bi = XMVectorSetW( b1, w );
XMStoreFloat4( &tangents4[ j ], bi );
}
if ( bitangents )
{
XMStoreFloat3( &bitangents[ j ], b2 );
}
}
return S_OK;
}
};
namespace DirectX
{
//=====================================================================================
// Entry-points
//=====================================================================================
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint16_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT3* tangents, XMFLOAT3* bitangents )
{
if ( !tangents && !bitangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint16_t>( indices, nFaces, positions, normals, texcoords, nVerts, tangents, nullptr, bitangents );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint32_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT3* tangents, XMFLOAT3* bitangents )
{
if ( !tangents && !bitangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint32_t>( indices, nFaces, positions, normals, texcoords, nVerts, tangents, nullptr, bitangents );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint16_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT4* tangents, XMFLOAT3* bitangents )
{
if ( !tangents && !bitangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint16_t>( indices, nFaces, positions, normals, texcoords, nVerts, nullptr, tangents, bitangents );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint32_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT4* tangents, XMFLOAT3* bitangents )
{
if ( !tangents && !bitangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint32_t>( indices, nFaces, positions, normals, texcoords, nVerts, nullptr, tangents, bitangents );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint16_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT4* tangents )
{
if ( !tangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint16_t>( indices, nFaces, positions, normals, texcoords, nVerts, nullptr, tangents, nullptr );
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT ComputeTangentFrame( const uint32_t* indices, size_t nFaces,
const XMFLOAT3* positions, const XMFLOAT3* normals, const XMFLOAT2* texcoords,
size_t nVerts, XMFLOAT4* tangents )
{
if ( !tangents )
return E_INVALIDARG;
return _ComputeTangentFrame<uint32_t>( indices, nFaces, positions, normals, texcoords, nVerts, nullptr, tangents, nullptr );
}
} // namespace

Просмотреть файл

@ -1,387 +1,387 @@
//-------------------------------------------------------------------------------------
// DirectXMeshUtil.cpp
//
// DirectX Mesh Geometry Library - Utilities
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
using namespace DirectX;
#if defined(_XBOX_ONE) && defined(_TITLE)
static_assert(XBOX_DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM == DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM, "Xbox One XDK mismatch detected");
#endif
namespace DirectX
{
//=====================================================================================
// DXGI Format Utilities
//=====================================================================================
//-------------------------------------------------------------------------------------
// Returns bytes-per-element for a given DXGI format, or 0 on failure
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
size_t BytesPerElement( DXGI_FORMAT fmt )
{
// This list only includes those formats that are valid for use by IB or VB
switch( static_cast<int>(fmt) )
{
case DXGI_FORMAT_R32G32B32A32_FLOAT:
case DXGI_FORMAT_R32G32B32A32_UINT:
case DXGI_FORMAT_R32G32B32A32_SINT:
return 16;
case DXGI_FORMAT_R32G32B32_FLOAT:
case DXGI_FORMAT_R32G32B32_UINT:
case DXGI_FORMAT_R32G32B32_SINT:
return 12;
case DXGI_FORMAT_R16G16B16A16_FLOAT:
case DXGI_FORMAT_R16G16B16A16_UNORM:
case DXGI_FORMAT_R16G16B16A16_UINT:
case DXGI_FORMAT_R16G16B16A16_SNORM:
case DXGI_FORMAT_R16G16B16A16_SINT:
case DXGI_FORMAT_R32G32_FLOAT:
case DXGI_FORMAT_R32G32_UINT:
case DXGI_FORMAT_R32G32_SINT:
return 8;
case DXGI_FORMAT_R10G10B10A2_UNORM:
case DXGI_FORMAT_R10G10B10A2_UINT:
case DXGI_FORMAT_R11G11B10_FLOAT:
case DXGI_FORMAT_R8G8B8A8_UNORM:
case DXGI_FORMAT_R8G8B8A8_UINT:
case DXGI_FORMAT_R8G8B8A8_SNORM:
case DXGI_FORMAT_R8G8B8A8_SINT:
case DXGI_FORMAT_R16G16_FLOAT:
case DXGI_FORMAT_R16G16_UNORM:
case DXGI_FORMAT_R16G16_UINT:
case DXGI_FORMAT_R16G16_SNORM:
case DXGI_FORMAT_R16G16_SINT:
case DXGI_FORMAT_R32_FLOAT:
case DXGI_FORMAT_R32_UINT:
case DXGI_FORMAT_R32_SINT:
case DXGI_FORMAT_B8G8R8A8_UNORM:
case DXGI_FORMAT_B8G8R8X8_UNORM:
case XBOX_DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM:
return 4;
case DXGI_FORMAT_R8G8_UNORM:
case DXGI_FORMAT_R8G8_UINT:
case DXGI_FORMAT_R8G8_SNORM:
case DXGI_FORMAT_R8G8_SINT:
case DXGI_FORMAT_R16_FLOAT:
case DXGI_FORMAT_R16_UNORM:
case DXGI_FORMAT_R16_UINT:
case DXGI_FORMAT_R16_SNORM:
case DXGI_FORMAT_R16_SINT:
case DXGI_FORMAT_B5G6R5_UNORM:
case DXGI_FORMAT_B5G5R5A1_UNORM:
return 2;
case DXGI_FORMAT_R8_UNORM:
case DXGI_FORMAT_R8_UINT:
case DXGI_FORMAT_R8_SNORM:
case DXGI_FORMAT_R8_SINT:
return 1;
case DXGI_FORMAT_B4G4R4A4_UNORM:
return 2;
default:
// No BC, sRGB, X2Bias, SharedExp, Typeless, Depth, or Video formats
return 0;
}
}
//=====================================================================================
// Input Layout Descriptor Utilities
//=====================================================================================
//-------------------------------------------------------------------------------------
// Validates a D3D11_INPUT_ELEMENT_DESC structure
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
bool IsValid( const D3D11_INPUT_ELEMENT_DESC* vbDecl, size_t nDecl )
{
if ( !vbDecl || !nDecl )
{
// Note that 0 is allowed by the runtime for degenerate cases, but is not defined for DirectXMesh
return false;
}
if ( nDecl > D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT )
{
// The upper-limit depends on feature level, so we assume highest value here
return false;
}
for( size_t j = 0; j < nDecl; ++j )
{
size_t bpe = BytesPerElement( vbDecl[ j ].Format );
if ( !bpe )
{
// Not a valid DXGI format or it's not valid for VB usage
return false;
}
uint32_t alignment;
if ( bpe == 1 )
alignment = 1;
else if ( bpe == 2 )
alignment = 2;
else
alignment = 4;
if ( ( vbDecl[ j ].AlignedByteOffset != D3D11_APPEND_ALIGNED_ELEMENT )
&& ( vbDecl[ j ].AlignedByteOffset % alignment ) != 0 )
{
// Invalid alignment for element
return false;
}
if ( vbDecl[ j ].InputSlot >= D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT )
{
// The upper-limit depends on feature level, so we assume highest value here
return false;
}
switch( vbDecl[ j ].InputSlotClass )
{
case D3D11_INPUT_PER_VERTEX_DATA:
if ( vbDecl[ j ].InstanceDataStepRate != 0 )
{
return false;
}
break;
case D3D11_INPUT_PER_INSTANCE_DATA:
break;
default:
return false;
}
if ( !vbDecl[ j ].SemanticName )
{
return false;
}
// Debug layer also checks for trailing digit in the semantic name, and checks
// for inconsistent semantic name/slot assignment.
}
return true;
}
//-------------------------------------------------------------------------------------
// Compute the offsets to each element, and total stride of each slot
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
void ComputeInputLayout( const D3D11_INPUT_ELEMENT_DESC* vbDecl, size_t nDecl, uint32_t* offsets, uint32_t* strides )
{
assert( IsValid( vbDecl, nDecl ) );
if ( offsets )
memset( offsets, 0, sizeof(uint32_t) * nDecl );
if ( strides )
memset( strides, 0, sizeof(uint32_t) * D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT );
uint32_t prevABO[ D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ];
memset( prevABO, 0, sizeof(uint32_t) * D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT );
for( size_t j = 0; j < nDecl; ++j )
{
uint32_t slot = vbDecl[ j ].InputSlot;
if ( slot >= D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT )
{
// ignore bad input slots
continue;
}
size_t bpe = BytesPerElement( vbDecl[ j ].Format );
if ( !bpe )
{
// ignore invalid format
continue;
}
uint32_t alignment;
if ( bpe == 1 )
alignment = 1;
else if ( bpe == 2 )
alignment = 2;
else
alignment = 4;
uint32_t alignedByteOffset = vbDecl[ j ].AlignedByteOffset;
if ( alignedByteOffset == D3D11_APPEND_ALIGNED_ELEMENT )
{
alignedByteOffset = prevABO[ slot ];
}
if ( offsets )
{
offsets[ j ] = alignedByteOffset;
}
if( strides )
{
uint32_t istride = uint32_t( alignedByteOffset + bpe );
strides[ slot ] = std::max<uint32_t>( strides[ slot ], istride );
}
prevABO[ slot ] = uint32_t( alignedByteOffset + bpe + ( bpe % alignment ) );
}
}
//=====================================================================================
// Attribute Utilities
//=====================================================================================
_Use_decl_annotations_
std::vector<std::pair<size_t,size_t>> ComputeSubsets( const uint32_t* attributes, size_t nFaces )
{
std::vector<std::pair<size_t,size_t>> subsets;
if ( !nFaces )
return subsets;
if ( !attributes )
{
subsets.emplace_back( std::pair<size_t,size_t>( 0, nFaces ) );
return subsets;
}
uint32_t lastAttr = attributes[ 0 ];
size_t offset = 0;
size_t count = 1;
for( size_t j = 1; j < nFaces; ++j )
{
if ( attributes[ j ] != lastAttr )
{
subsets.emplace_back( std::pair<size_t,size_t>( offset, count ) );
lastAttr = attributes[ j ];
offset = j;
count = 1;
}
else
{
count += 1;
}
}
if ( count > 0 )
{
subsets.emplace_back( std::pair<size_t,size_t>( offset, count ) );
}
return subsets;
}
} // namespace // DirectX
//=====================================================================================
// Mesh Optimization Utilities
//=====================================================================================
namespace
{
template<class index_t>
void _ComputeVertexCacheMissRate( _In_reads_(nFaces*3) const index_t* indices, size_t nFaces, size_t nVerts, size_t cacheSize,
float& acmr, float& atvr )
{
acmr = -1.f;
atvr = -1.f;
if ( !indices || !nFaces || !nVerts || !cacheSize )
return;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return;
if ( nVerts >= index_t(-1) )
return;
size_t misses = 0;
std::unique_ptr<uint32_t[]> fifo( new uint32_t[ cacheSize ] );
size_t tail = 0;
memset( fifo.get(), 0xff, sizeof(uint32_t) * cacheSize );
for( size_t j = 0; j < (nFaces * 3); ++j )
{
if ( indices[ j ] == index_t(-1) )
continue;
bool found = false;
for( size_t ptr = 0; ptr < cacheSize; ++ptr )
{
if ( fifo[ ptr ] == indices[ j ] )
{
found = true;
break;
}
}
if ( !found )
{
++misses;
fifo[ tail ] = indices[ j ];
++tail;
if ( tail == cacheSize ) tail = 0;
}
}
// ideal is 0.5, individual tris have 3.0
acmr = float( misses ) / float( nFaces );
// ideal is 1.0, worst case is 6.0
atvr = float( misses ) / float( nVerts );
}
} // namespace
namespace DirectX
{
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
void ComputeVertexCacheMissRate( const uint16_t* indices, size_t nFaces, size_t nVerts, size_t cacheSize,
float& acmr, float& atvr )
{
_ComputeVertexCacheMissRate<uint16_t>( indices, nFaces, nVerts, cacheSize, acmr, atvr );
}
_Use_decl_annotations_
void ComputeVertexCacheMissRate( const uint32_t* indices, size_t nFaces, size_t nVerts, size_t cacheSize,
float& acmr, float& atvr )
{
_ComputeVertexCacheMissRate<uint32_t>( indices, nFaces, nVerts, cacheSize, acmr, atvr );
}
} // namespace // DirectX
//-------------------------------------------------------------------------------------
// DirectXMeshUtil.cpp
//
// DirectX Mesh Geometry Library - Utilities
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
using namespace DirectX;
#if defined(_XBOX_ONE) && defined(_TITLE)
static_assert(XBOX_DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM == DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM, "Xbox One XDK mismatch detected");
#endif
namespace DirectX
{
//=====================================================================================
// DXGI Format Utilities
//=====================================================================================
//-------------------------------------------------------------------------------------
// Returns bytes-per-element for a given DXGI format, or 0 on failure
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
size_t BytesPerElement( DXGI_FORMAT fmt )
{
// This list only includes those formats that are valid for use by IB or VB
switch( static_cast<int>(fmt) )
{
case DXGI_FORMAT_R32G32B32A32_FLOAT:
case DXGI_FORMAT_R32G32B32A32_UINT:
case DXGI_FORMAT_R32G32B32A32_SINT:
return 16;
case DXGI_FORMAT_R32G32B32_FLOAT:
case DXGI_FORMAT_R32G32B32_UINT:
case DXGI_FORMAT_R32G32B32_SINT:
return 12;
case DXGI_FORMAT_R16G16B16A16_FLOAT:
case DXGI_FORMAT_R16G16B16A16_UNORM:
case DXGI_FORMAT_R16G16B16A16_UINT:
case DXGI_FORMAT_R16G16B16A16_SNORM:
case DXGI_FORMAT_R16G16B16A16_SINT:
case DXGI_FORMAT_R32G32_FLOAT:
case DXGI_FORMAT_R32G32_UINT:
case DXGI_FORMAT_R32G32_SINT:
return 8;
case DXGI_FORMAT_R10G10B10A2_UNORM:
case DXGI_FORMAT_R10G10B10A2_UINT:
case DXGI_FORMAT_R11G11B10_FLOAT:
case DXGI_FORMAT_R8G8B8A8_UNORM:
case DXGI_FORMAT_R8G8B8A8_UINT:
case DXGI_FORMAT_R8G8B8A8_SNORM:
case DXGI_FORMAT_R8G8B8A8_SINT:
case DXGI_FORMAT_R16G16_FLOAT:
case DXGI_FORMAT_R16G16_UNORM:
case DXGI_FORMAT_R16G16_UINT:
case DXGI_FORMAT_R16G16_SNORM:
case DXGI_FORMAT_R16G16_SINT:
case DXGI_FORMAT_R32_FLOAT:
case DXGI_FORMAT_R32_UINT:
case DXGI_FORMAT_R32_SINT:
case DXGI_FORMAT_B8G8R8A8_UNORM:
case DXGI_FORMAT_B8G8R8X8_UNORM:
case XBOX_DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM:
return 4;
case DXGI_FORMAT_R8G8_UNORM:
case DXGI_FORMAT_R8G8_UINT:
case DXGI_FORMAT_R8G8_SNORM:
case DXGI_FORMAT_R8G8_SINT:
case DXGI_FORMAT_R16_FLOAT:
case DXGI_FORMAT_R16_UNORM:
case DXGI_FORMAT_R16_UINT:
case DXGI_FORMAT_R16_SNORM:
case DXGI_FORMAT_R16_SINT:
case DXGI_FORMAT_B5G6R5_UNORM:
case DXGI_FORMAT_B5G5R5A1_UNORM:
return 2;
case DXGI_FORMAT_R8_UNORM:
case DXGI_FORMAT_R8_UINT:
case DXGI_FORMAT_R8_SNORM:
case DXGI_FORMAT_R8_SINT:
return 1;
case DXGI_FORMAT_B4G4R4A4_UNORM:
return 2;
default:
// No BC, sRGB, X2Bias, SharedExp, Typeless, Depth, or Video formats
return 0;
}
}
//=====================================================================================
// Input Layout Descriptor Utilities
//=====================================================================================
//-------------------------------------------------------------------------------------
// Validates a D3D11_INPUT_ELEMENT_DESC structure
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
bool IsValid( const D3D11_INPUT_ELEMENT_DESC* vbDecl, size_t nDecl )
{
if ( !vbDecl || !nDecl )
{
// Note that 0 is allowed by the runtime for degenerate cases, but is not defined for DirectXMesh
return false;
}
if ( nDecl > D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT )
{
// The upper-limit depends on feature level, so we assume highest value here
return false;
}
for( size_t j = 0; j < nDecl; ++j )
{
size_t bpe = BytesPerElement( vbDecl[ j ].Format );
if ( !bpe )
{
// Not a valid DXGI format or it's not valid for VB usage
return false;
}
uint32_t alignment;
if ( bpe == 1 )
alignment = 1;
else if ( bpe == 2 )
alignment = 2;
else
alignment = 4;
if ( ( vbDecl[ j ].AlignedByteOffset != D3D11_APPEND_ALIGNED_ELEMENT )
&& ( vbDecl[ j ].AlignedByteOffset % alignment ) != 0 )
{
// Invalid alignment for element
return false;
}
if ( vbDecl[ j ].InputSlot >= D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT )
{
// The upper-limit depends on feature level, so we assume highest value here
return false;
}
switch( vbDecl[ j ].InputSlotClass )
{
case D3D11_INPUT_PER_VERTEX_DATA:
if ( vbDecl[ j ].InstanceDataStepRate != 0 )
{
return false;
}
break;
case D3D11_INPUT_PER_INSTANCE_DATA:
break;
default:
return false;
}
if ( !vbDecl[ j ].SemanticName )
{
return false;
}
// Debug layer also checks for trailing digit in the semantic name, and checks
// for inconsistent semantic name/slot assignment.
}
return true;
}
//-------------------------------------------------------------------------------------
// Compute the offsets to each element, and total stride of each slot
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
void ComputeInputLayout( const D3D11_INPUT_ELEMENT_DESC* vbDecl, size_t nDecl, uint32_t* offsets, uint32_t* strides )
{
assert( IsValid( vbDecl, nDecl ) );
if ( offsets )
memset( offsets, 0, sizeof(uint32_t) * nDecl );
if ( strides )
memset( strides, 0, sizeof(uint32_t) * D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT );
uint32_t prevABO[ D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ];
memset( prevABO, 0, sizeof(uint32_t) * D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT );
for( size_t j = 0; j < nDecl; ++j )
{
uint32_t slot = vbDecl[ j ].InputSlot;
if ( slot >= D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT )
{
// ignore bad input slots
continue;
}
size_t bpe = BytesPerElement( vbDecl[ j ].Format );
if ( !bpe )
{
// ignore invalid format
continue;
}
uint32_t alignment;
if ( bpe == 1 )
alignment = 1;
else if ( bpe == 2 )
alignment = 2;
else
alignment = 4;
uint32_t alignedByteOffset = vbDecl[ j ].AlignedByteOffset;
if ( alignedByteOffset == D3D11_APPEND_ALIGNED_ELEMENT )
{
alignedByteOffset = prevABO[ slot ];
}
if ( offsets )
{
offsets[ j ] = alignedByteOffset;
}
if( strides )
{
uint32_t istride = uint32_t( alignedByteOffset + bpe );
strides[ slot ] = std::max<uint32_t>( strides[ slot ], istride );
}
prevABO[ slot ] = uint32_t( alignedByteOffset + bpe + ( bpe % alignment ) );
}
}
//=====================================================================================
// Attribute Utilities
//=====================================================================================
_Use_decl_annotations_
std::vector<std::pair<size_t,size_t>> ComputeSubsets( const uint32_t* attributes, size_t nFaces )
{
std::vector<std::pair<size_t,size_t>> subsets;
if ( !nFaces )
return subsets;
if ( !attributes )
{
subsets.emplace_back( std::pair<size_t,size_t>( 0, nFaces ) );
return subsets;
}
uint32_t lastAttr = attributes[ 0 ];
size_t offset = 0;
size_t count = 1;
for( size_t j = 1; j < nFaces; ++j )
{
if ( attributes[ j ] != lastAttr )
{
subsets.emplace_back( std::pair<size_t,size_t>( offset, count ) );
lastAttr = attributes[ j ];
offset = j;
count = 1;
}
else
{
count += 1;
}
}
if ( count > 0 )
{
subsets.emplace_back( std::pair<size_t,size_t>( offset, count ) );
}
return subsets;
}
} // namespace // DirectX
//=====================================================================================
// Mesh Optimization Utilities
//=====================================================================================
namespace
{
template<class index_t>
void _ComputeVertexCacheMissRate( _In_reads_(nFaces*3) const index_t* indices, size_t nFaces, size_t nVerts, size_t cacheSize,
float& acmr, float& atvr )
{
acmr = -1.f;
atvr = -1.f;
if ( !indices || !nFaces || !nVerts || !cacheSize )
return;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return;
if ( nVerts >= index_t(-1) )
return;
size_t misses = 0;
std::unique_ptr<uint32_t[]> fifo( new uint32_t[ cacheSize ] );
size_t tail = 0;
memset( fifo.get(), 0xff, sizeof(uint32_t) * cacheSize );
for( size_t j = 0; j < (nFaces * 3); ++j )
{
if ( indices[ j ] == index_t(-1) )
continue;
bool found = false;
for( size_t ptr = 0; ptr < cacheSize; ++ptr )
{
if ( fifo[ ptr ] == indices[ j ] )
{
found = true;
break;
}
}
if ( !found )
{
++misses;
fifo[ tail ] = indices[ j ];
++tail;
if ( tail == cacheSize ) tail = 0;
}
}
// ideal is 0.5, individual tris have 3.0
acmr = float( misses ) / float( nFaces );
// ideal is 1.0, worst case is 6.0
atvr = float( misses ) / float( nVerts );
}
} // namespace
namespace DirectX
{
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
void ComputeVertexCacheMissRate( const uint16_t* indices, size_t nFaces, size_t nVerts, size_t cacheSize,
float& acmr, float& atvr )
{
_ComputeVertexCacheMissRate<uint16_t>( indices, nFaces, nVerts, cacheSize, acmr, atvr );
}
_Use_decl_annotations_
void ComputeVertexCacheMissRate( const uint32_t* indices, size_t nFaces, size_t nVerts, size_t cacheSize,
float& acmr, float& atvr )
{
_ComputeVertexCacheMissRate<uint32_t>( indices, nFaces, nVerts, cacheSize, acmr, atvr );
}
} // namespace // DirectX

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,426 +1,426 @@
//-------------------------------------------------------------------------------------
// DirectXMeshValidate.cpp
//
// DirectX Mesh Geometry Library - Mesh validation
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
using namespace DirectX;
namespace
{
//-------------------------------------------------------------------------------------
// Validates indices and optionally the adjacency information
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT ValidateIndices( _In_reads_(nFaces*3) const index_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _In_reads_opt_(nFaces*3) const uint32_t* adjacency,
_In_ DWORD flags, _In_opt_ std::wstring* msgs )
{
bool result = true;
if ( !adjacency )
{
if ( flags & VALIDATE_BACKFACING )
{
if ( msgs )
*msgs += L"Missing adjacency information required to check for BACKFACING\n";
result = false;
}
if ( flags & VALIDATE_ASYMMETRIC_ADJ )
{
if ( msgs )
*msgs += L"Missing adjacency information required to check for ASYMMETRIC_ADJ\n";
result = false;
}
if ( !result )
return E_INVALIDARG;
}
for( size_t face = 0; face < nFaces; ++face )
{
// Check for values in-range
for( size_t point = 0; point < 3; ++point )
{
index_t i = indices[ face*3 + point ];
if ( i >= nVerts && i != index_t(-1) )
{
if ( !msgs )
return E_FAIL;
result = false;
wchar_t buff[ 128 ];
swprintf_s( buff, L"An invalid index value (%u) was found on face %Iu\n", i, face );
*msgs += buff;
}
if ( adjacency )
{
uint32_t j = adjacency[ face*3 + point ];
if ( j >= nFaces && j != UNUSED32 )
{
if ( !msgs )
return E_FAIL;
result = false;
wchar_t buff[ 128 ];
swprintf_s( buff, L"An invalid neighbor index value (%u) was found on face %Iu\n", j, face );
*msgs += buff;
}
}
}
// Check for unused faces
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
{
if ( flags & VALIDATE_UNUSED )
{
if ( i0 != i1
|| i0 != i2
|| i1 != i2 )
{
if ( !msgs )
return E_FAIL;
result = false;
wchar_t buff[ 128 ];
swprintf_s( buff, L"An unused face (%Iu) contains 'valid' but ignored vertices (%u,%u,%u)\n", face, i0, i1, i2 );
*msgs += buff;
}
if ( adjacency )
{
for( size_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k != UNUSED32 )
{
if ( !msgs )
return E_FAIL;
result = false;
wchar_t buff[ 128 ];
swprintf_s( buff, L"An unused face (%Iu) has a neighbor %u\n", face, k );
*msgs += buff;
}
}
}
}
// ignore unused triangles for remaining tests
continue;
}
// Check for degenerate triangles
if ( i0 == i1
|| i0 == i2
|| i1 == i2 )
{
if ( flags & VALIDATE_DEGENERATE )
{
if ( !msgs )
return E_FAIL;
result = false;
index_t bad;
if ( i0 == i1 )
bad = i0;
else if ( i1 == i2 )
bad = i2;
else
bad = i0;
wchar_t buff[ 128 ];
swprintf_s( buff, L"A point (%u) was found more than once in triangle %Iu\n", bad, face );
*msgs += buff;
if ( adjacency )
{
for( size_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k != UNUSED32 )
{
result = false;
swprintf_s( buff, L"A degenerate face (%Iu) has a neighbor %u\n", face, k );
*msgs += buff;
}
}
}
}
// ignore degenerate triangles for remaining tests
continue;
}
// Check for symmetric neighbors
if ( ( flags & VALIDATE_ASYMMETRIC_ADJ ) && adjacency )
{
for( size_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k == UNUSED32 )
continue;
assert( k < nFaces );
uint32_t edge = find_edge<uint32_t>( &adjacency[ k * 3 ], uint32_t( face ) );
if ( edge >= 3 )
{
if ( !msgs )
return E_FAIL;
result = false;
wchar_t buff[ 256 ];
swprintf_s( buff, L"A neighbor triangle (%u) does not reference back to this face (%Iu) as expected\n", k, face );
*msgs += buff;
}
}
}
// Check for duplicate neighbor
if ( ( flags & VALIDATE_BACKFACING ) && adjacency )
{
uint32_t j0 = adjacency[ face*3 ];
uint32_t j1 = adjacency[ face*3 + 1 ];
uint32_t j2 = adjacency[ face*3 + 2 ];
if ( ( j0 == j1 && j0 != UNUSED32 )
|| ( j0 == j2 && j0 != UNUSED32 )
|| ( j1 == j2 && j1 != UNUSED32 ) )
{
if ( !msgs )
return E_FAIL;
result = false;
uint32_t bad;
if ( j0 == j1 && j0 != UNUSED32 )
bad = j0;
else if ( j0 == j2 && j0 != UNUSED32 )
bad = j0;
else
bad = j1;
wchar_t buff[ 256 ];
swprintf_s( buff, L"A neighbor triangle (%u) was found more than once on triangle %Iu\n"
L"\t(likley problem is that two triangles share same points with opposite direction)\n", bad, face );
*msgs += buff;
}
}
}
return result ? S_OK : E_FAIL;
}
//-------------------------------------------------------------------------------------
// Validates mesh contains no bowties (i.e. a vertex is the apex of two separate triangle fans)
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT ValidateNoBowties( _In_reads_(nFaces*3) const index_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _In_reads_opt_(nFaces*3) const uint32_t* adjacency,
_In_opt_ std::wstring* msgs )
{
if ( !adjacency )
{
if ( msgs )
*msgs += L"Missing adjacency information required to check for BOWTIES\n";
return E_INVALIDARG;
}
size_t tsize = ( sizeof(bool) * nFaces * 3 ) + ( sizeof(index_t) * nVerts * 2 ) + ( sizeof(bool) * nVerts );
std::unique_ptr<uint8_t[]> temp( new (std::nothrow) uint8_t[ tsize ] );
if ( !temp )
return E_OUTOFMEMORY;
auto faceSeen = reinterpret_cast<bool*>( temp.get() );
auto faceIds = reinterpret_cast<index_t*>( temp.get() + sizeof(bool) * nFaces * 3 );
auto faceUsing = reinterpret_cast<index_t*>( reinterpret_cast<uint8_t*>( faceIds ) + sizeof(index_t) * nVerts );
auto vertexBowtie = reinterpret_cast<bool*>( reinterpret_cast<uint8_t*>( faceUsing ) + sizeof(index_t) * nVerts );
memset( faceSeen, 0, sizeof(bool) * nFaces * 3 );
memset( faceIds, 0xFF, sizeof(index_t) * nVerts );
memset( faceUsing, 0, sizeof(index_t) * nVerts );
memset( vertexBowtie, 0, sizeof(bool) * nVerts );
orbit_iterator<index_t> ovi( adjacency, indices, nFaces );
bool result = true;
for( uint32_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == i1
|| i0 == i2
|| i1 == i2 )
{
// ignore degenerate faces
faceSeen[ face * 3 ] = true;
faceSeen[ face * 3 + 1 ] = true;
faceSeen[ face * 3 + 2 ] = true;
continue;
}
for( size_t point = 0; point < 3; ++point )
{
if ( faceSeen[ face * 3 + point ] )
continue;
faceSeen[ face * 3 + point ] = true;
index_t i = indices[ face*3 + point ];
ovi.initialize( face, i, orbit_iterator<index_t>::ALL );
ovi.moveToCCW();
while ( !ovi.done() )
{
uint32_t curFace = ovi.nextFace();
if ( curFace >= nFaces )
return E_FAIL;
uint32_t curPoint = ovi.getpoint();
if ( curPoint > 2 )
return E_FAIL;
faceSeen[ curFace*3 + curPoint ] = true;
uint32_t j = indices[ curFace * 3 + curPoint ];
if ( faceIds[ j ] == index_t(-1) )
{
faceIds[ j ] = index_t( face );
faceUsing[ j ] = index_t( curFace );
}
else if ( ( faceIds[ j ] != index_t( face ) ) && !vertexBowtie[ j ] )
{
// We found a (unique) bowtie!
if ( !msgs )
return E_FAIL;
if ( result )
{
// If this is the first bowtie found, add a quick explanation
*msgs += L"A bowtie was found. Bowties can be fixed by calling Clean\n"
L" A bowtie is the usage of a single vertex by two separate fans of triangles.\n"
L" The fix is to duplicate the vertex so that each fan has its own vertex.\n";
result = false;
}
vertexBowtie[ j ] = true;
wchar_t buff[ 256 ];
swprintf_s( buff, L"\nBowtie found around vertex %u shared by faces %u and %u\n", j, curFace, faceUsing[ j ] );
*msgs += buff;
}
}
}
}
return result ? S_OK : E_FAIL;
}
};
namespace DirectX
{
//=====================================================================================
// Entry-points
//=====================================================================================
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT Validate( const uint16_t* indices, size_t nFaces, size_t nVerts,
const uint32_t* adjacency, DWORD flags, std::wstring* msgs )
{
if ( !indices || !nFaces || !nVerts )
return E_INVALIDARG;
if ( nVerts >= UINT16_MAX )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
if ( msgs )
msgs->clear();
HRESULT hr = ValidateIndices<uint16_t>( indices, nFaces, nVerts, adjacency, flags, msgs );
if ( FAILED(hr) )
return hr;
if ( flags & VALIDATE_BOWTIES )
{
hr = ValidateNoBowties<uint16_t>( indices, nFaces, nVerts, adjacency, msgs );
if ( FAILED(hr) )
return hr;
}
return S_OK;
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT Validate( const uint32_t* indices, size_t nFaces, size_t nVerts,
const uint32_t* adjacency, DWORD flags, std::wstring* msgs )
{
if ( !indices || !nFaces || !nVerts )
return E_INVALIDARG;
if ( nVerts >= UINT32_MAX )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
if ( msgs )
msgs->clear();
HRESULT hr = ValidateIndices<uint32_t>( indices, nFaces, nVerts, adjacency, flags, msgs );
if ( FAILED(hr) )
return hr;
if ( flags & VALIDATE_BOWTIES )
{
hr = ValidateNoBowties<uint32_t>( indices, nFaces, nVerts, adjacency, msgs );
if ( FAILED(hr) )
return hr;
}
return S_OK;
}
//-------------------------------------------------------------------------------------
// DirectXMeshValidate.cpp
//
// DirectX Mesh Geometry Library - Mesh validation
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//-------------------------------------------------------------------------------------
#include "DirectXMeshP.h"
using namespace DirectX;
namespace
{
//-------------------------------------------------------------------------------------
// Validates indices and optionally the adjacency information
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT ValidateIndices( _In_reads_(nFaces*3) const index_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _In_reads_opt_(nFaces*3) const uint32_t* adjacency,
_In_ DWORD flags, _In_opt_ std::wstring* msgs )
{
bool result = true;
if ( !adjacency )
{
if ( flags & VALIDATE_BACKFACING )
{
if ( msgs )
*msgs += L"Missing adjacency information required to check for BACKFACING\n";
result = false;
}
if ( flags & VALIDATE_ASYMMETRIC_ADJ )
{
if ( msgs )
*msgs += L"Missing adjacency information required to check for ASYMMETRIC_ADJ\n";
result = false;
}
if ( !result )
return E_INVALIDARG;
}
for( size_t face = 0; face < nFaces; ++face )
{
// Check for values in-range
for( size_t point = 0; point < 3; ++point )
{
index_t i = indices[ face*3 + point ];
if ( i >= nVerts && i != index_t(-1) )
{
if ( !msgs )
return E_FAIL;
result = false;
wchar_t buff[ 128 ];
swprintf_s( buff, L"An invalid index value (%u) was found on face %Iu\n", i, face );
*msgs += buff;
}
if ( adjacency )
{
uint32_t j = adjacency[ face*3 + point ];
if ( j >= nFaces && j != UNUSED32 )
{
if ( !msgs )
return E_FAIL;
result = false;
wchar_t buff[ 128 ];
swprintf_s( buff, L"An invalid neighbor index value (%u) was found on face %Iu\n", j, face );
*msgs += buff;
}
}
}
// Check for unused faces
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == index_t(-1)
|| i1 == index_t(-1)
|| i2 == index_t(-1) )
{
if ( flags & VALIDATE_UNUSED )
{
if ( i0 != i1
|| i0 != i2
|| i1 != i2 )
{
if ( !msgs )
return E_FAIL;
result = false;
wchar_t buff[ 128 ];
swprintf_s( buff, L"An unused face (%Iu) contains 'valid' but ignored vertices (%u,%u,%u)\n", face, i0, i1, i2 );
*msgs += buff;
}
if ( adjacency )
{
for( size_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k != UNUSED32 )
{
if ( !msgs )
return E_FAIL;
result = false;
wchar_t buff[ 128 ];
swprintf_s( buff, L"An unused face (%Iu) has a neighbor %u\n", face, k );
*msgs += buff;
}
}
}
}
// ignore unused triangles for remaining tests
continue;
}
// Check for degenerate triangles
if ( i0 == i1
|| i0 == i2
|| i1 == i2 )
{
if ( flags & VALIDATE_DEGENERATE )
{
if ( !msgs )
return E_FAIL;
result = false;
index_t bad;
if ( i0 == i1 )
bad = i0;
else if ( i1 == i2 )
bad = i2;
else
bad = i0;
wchar_t buff[ 128 ];
swprintf_s( buff, L"A point (%u) was found more than once in triangle %Iu\n", bad, face );
*msgs += buff;
if ( adjacency )
{
for( size_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k != UNUSED32 )
{
result = false;
swprintf_s( buff, L"A degenerate face (%Iu) has a neighbor %u\n", face, k );
*msgs += buff;
}
}
}
}
// ignore degenerate triangles for remaining tests
continue;
}
// Check for symmetric neighbors
if ( ( flags & VALIDATE_ASYMMETRIC_ADJ ) && adjacency )
{
for( size_t point = 0; point < 3; ++point )
{
uint32_t k = adjacency[ face*3 + point ];
if ( k == UNUSED32 )
continue;
assert( k < nFaces );
uint32_t edge = find_edge<uint32_t>( &adjacency[ k * 3 ], uint32_t( face ) );
if ( edge >= 3 )
{
if ( !msgs )
return E_FAIL;
result = false;
wchar_t buff[ 256 ];
swprintf_s( buff, L"A neighbor triangle (%u) does not reference back to this face (%Iu) as expected\n", k, face );
*msgs += buff;
}
}
}
// Check for duplicate neighbor
if ( ( flags & VALIDATE_BACKFACING ) && adjacency )
{
uint32_t j0 = adjacency[ face*3 ];
uint32_t j1 = adjacency[ face*3 + 1 ];
uint32_t j2 = adjacency[ face*3 + 2 ];
if ( ( j0 == j1 && j0 != UNUSED32 )
|| ( j0 == j2 && j0 != UNUSED32 )
|| ( j1 == j2 && j1 != UNUSED32 ) )
{
if ( !msgs )
return E_FAIL;
result = false;
uint32_t bad;
if ( j0 == j1 && j0 != UNUSED32 )
bad = j0;
else if ( j0 == j2 && j0 != UNUSED32 )
bad = j0;
else
bad = j1;
wchar_t buff[ 256 ];
swprintf_s( buff, L"A neighbor triangle (%u) was found more than once on triangle %Iu\n"
L"\t(likley problem is that two triangles share same points with opposite direction)\n", bad, face );
*msgs += buff;
}
}
}
return result ? S_OK : E_FAIL;
}
//-------------------------------------------------------------------------------------
// Validates mesh contains no bowties (i.e. a vertex is the apex of two separate triangle fans)
//-------------------------------------------------------------------------------------
template<class index_t>
HRESULT ValidateNoBowties( _In_reads_(nFaces*3) const index_t* indices, _In_ size_t nFaces,
_In_ size_t nVerts, _In_reads_opt_(nFaces*3) const uint32_t* adjacency,
_In_opt_ std::wstring* msgs )
{
if ( !adjacency )
{
if ( msgs )
*msgs += L"Missing adjacency information required to check for BOWTIES\n";
return E_INVALIDARG;
}
size_t tsize = ( sizeof(bool) * nFaces * 3 ) + ( sizeof(index_t) * nVerts * 2 ) + ( sizeof(bool) * nVerts );
std::unique_ptr<uint8_t[]> temp( new (std::nothrow) uint8_t[ tsize ] );
if ( !temp )
return E_OUTOFMEMORY;
auto faceSeen = reinterpret_cast<bool*>( temp.get() );
auto faceIds = reinterpret_cast<index_t*>( temp.get() + sizeof(bool) * nFaces * 3 );
auto faceUsing = reinterpret_cast<index_t*>( reinterpret_cast<uint8_t*>( faceIds ) + sizeof(index_t) * nVerts );
auto vertexBowtie = reinterpret_cast<bool*>( reinterpret_cast<uint8_t*>( faceUsing ) + sizeof(index_t) * nVerts );
memset( faceSeen, 0, sizeof(bool) * nFaces * 3 );
memset( faceIds, 0xFF, sizeof(index_t) * nVerts );
memset( faceUsing, 0, sizeof(index_t) * nVerts );
memset( vertexBowtie, 0, sizeof(bool) * nVerts );
orbit_iterator<index_t> ovi( adjacency, indices, nFaces );
bool result = true;
for( uint32_t face = 0; face < nFaces; ++face )
{
index_t i0 = indices[ face*3 ];
index_t i1 = indices[ face*3 + 1 ];
index_t i2 = indices[ face*3 + 2 ];
if ( i0 == i1
|| i0 == i2
|| i1 == i2 )
{
// ignore degenerate faces
faceSeen[ face * 3 ] = true;
faceSeen[ face * 3 + 1 ] = true;
faceSeen[ face * 3 + 2 ] = true;
continue;
}
for( size_t point = 0; point < 3; ++point )
{
if ( faceSeen[ face * 3 + point ] )
continue;
faceSeen[ face * 3 + point ] = true;
index_t i = indices[ face*3 + point ];
ovi.initialize( face, i, orbit_iterator<index_t>::ALL );
ovi.moveToCCW();
while ( !ovi.done() )
{
uint32_t curFace = ovi.nextFace();
if ( curFace >= nFaces )
return E_FAIL;
uint32_t curPoint = ovi.getpoint();
if ( curPoint > 2 )
return E_FAIL;
faceSeen[ curFace*3 + curPoint ] = true;
uint32_t j = indices[ curFace * 3 + curPoint ];
if ( faceIds[ j ] == index_t(-1) )
{
faceIds[ j ] = index_t( face );
faceUsing[ j ] = index_t( curFace );
}
else if ( ( faceIds[ j ] != index_t( face ) ) && !vertexBowtie[ j ] )
{
// We found a (unique) bowtie!
if ( !msgs )
return E_FAIL;
if ( result )
{
// If this is the first bowtie found, add a quick explanation
*msgs += L"A bowtie was found. Bowties can be fixed by calling Clean\n"
L" A bowtie is the usage of a single vertex by two separate fans of triangles.\n"
L" The fix is to duplicate the vertex so that each fan has its own vertex.\n";
result = false;
}
vertexBowtie[ j ] = true;
wchar_t buff[ 256 ];
swprintf_s( buff, L"\nBowtie found around vertex %u shared by faces %u and %u\n", j, curFace, faceUsing[ j ] );
*msgs += buff;
}
}
}
}
return result ? S_OK : E_FAIL;
}
};
namespace DirectX
{
//=====================================================================================
// Entry-points
//=====================================================================================
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT Validate( const uint16_t* indices, size_t nFaces, size_t nVerts,
const uint32_t* adjacency, DWORD flags, std::wstring* msgs )
{
if ( !indices || !nFaces || !nVerts )
return E_INVALIDARG;
if ( nVerts >= UINT16_MAX )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
if ( msgs )
msgs->clear();
HRESULT hr = ValidateIndices<uint16_t>( indices, nFaces, nVerts, adjacency, flags, msgs );
if ( FAILED(hr) )
return hr;
if ( flags & VALIDATE_BOWTIES )
{
hr = ValidateNoBowties<uint16_t>( indices, nFaces, nVerts, adjacency, msgs );
if ( FAILED(hr) )
return hr;
}
return S_OK;
}
//-------------------------------------------------------------------------------------
_Use_decl_annotations_
HRESULT Validate( const uint32_t* indices, size_t nFaces, size_t nVerts,
const uint32_t* adjacency, DWORD flags, std::wstring* msgs )
{
if ( !indices || !nFaces || !nVerts )
return E_INVALIDARG;
if ( nVerts >= UINT32_MAX )
return E_INVALIDARG;
if ( ( uint64_t(nFaces) * 3 ) >= UINT32_MAX )
return HRESULT_FROM_WIN32( ERROR_ARITHMETIC_OVERFLOW );
if ( msgs )
msgs->clear();
HRESULT hr = ValidateIndices<uint32_t>( indices, nFaces, nVerts, adjacency, flags, msgs );
if ( FAILED(hr) )
return hr;
if ( flags & VALIDATE_BOWTIES )
{
hr = ValidateNoBowties<uint32_t>( indices, nFaces, nVerts, adjacency, msgs );
if ( FAILED(hr) )
return hr;
}
return S_OK;
}
} // namespace

Просмотреть файл

@ -1,401 +1,401 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Win32">
<Configuration>Profile</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|x64">
<Configuration>Profile</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>DirectXMesh</ProjectName>
<ProjectGuid>{6857F086-F6FE-4150-9ED7-7446F1C1C220}</ProjectGuid>
<RootNamespace>DirectXMesh</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup />
<ItemGroup>
<CLInclude Include="DirectXMesh.h" />
<CLInclude Include="DirectXMeshP.h" />
<CLInclude Include="DirectXMesh.inl" />
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
<CLInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup></ItemGroup>
<ItemGroup></ItemGroup>
<ItemGroup></ItemGroup>
<ItemGroup></ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Win32">
<Configuration>Profile</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|x64">
<Configuration>Profile</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>DirectXMesh</ProjectName>
<ProjectGuid>{6857F086-F6FE-4150-9ED7-7446F1C1C220}</ProjectGuid>
<RootNamespace>DirectXMesh</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command></Command>
</PreBuildEvent>
<PostBuildEvent>
<Command></Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup />
<ItemGroup>
<CLInclude Include="DirectXMesh.h" />
<CLInclude Include="DirectXMeshP.h" />
<CLInclude Include="DirectXMesh.inl" />
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
<CLInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup></ItemGroup>
<ItemGroup></ItemGroup>
<ItemGroup></ItemGroup>
<ItemGroup></ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

Просмотреть файл

@ -1,64 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns:atg="http://atg.xbox.com" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{688f36e0-2397-4b02-99d4-8d815ef0133e}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{ca75b164-7662-49ef-888e-95ef0625674c}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<CLInclude Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</CLInclude>
<CLInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</CLInclude>
<CLInclude Include="scoped.h">
<Filter>Source Files</Filter>
</CLInclude>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CLInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</CLInclude>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns:atg="http://atg.xbox.com" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{688f36e0-2397-4b02-99d4-8d815ef0133e}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{ca75b164-7662-49ef-888e-95ef0625674c}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<CLInclude Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</CLInclude>
<CLInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</CLInclude>
<CLInclude Include="scoped.h">
<Filter>Source Files</Filter>
</CLInclude>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CLInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</CLInclude>
</ItemGroup>
<ItemGroup>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,417 +1,417 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Win32">
<Configuration>Profile</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|x64">
<Configuration>Profile</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>DirectXMesh</ProjectName>
<ProjectGuid>{6857F086-F6FE-4150-9ED7-7446F1C1C220}</ProjectGuid>
<RootNamespace>DirectXMesh</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup />
<ItemGroup>
<CLInclude Include="DirectXMesh.h" />
<CLInclude Include="DirectXMeshP.h" />
<CLInclude Include="DirectXMesh.inl" />
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
<CLInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Win32">
<Configuration>Profile</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|x64">
<Configuration>Profile</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>DirectXMesh</ProjectName>
<ProjectGuid>{6857F086-F6FE-4150-9ED7-7446F1C1C220}</ProjectGuid>
<RootNamespace>DirectXMesh</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>false</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_WINDOWS;_LIB;_WIN32_WINNT=0x0600;_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup />
<ItemGroup>
<CLInclude Include="DirectXMesh.h" />
<CLInclude Include="DirectXMeshP.h" />
<CLInclude Include="DirectXMesh.inl" />
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
<CLInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

Просмотреть файл

@ -1,64 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns:atg="http://atg.xbox.com" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{d76fe36f-16db-490a-9ba9-13d02e13a65b}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{d4f97b15-a8e2-4223-a242-ca68b901e1fb}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<CLInclude Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</CLInclude>
<CLInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</CLInclude>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<CLInclude Include="scoped.h">
<Filter>Source Files</Filter>
</CLInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CLInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</CLInclude>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns:atg="http://atg.xbox.com" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{d76fe36f-16db-490a-9ba9-13d02e13a65b}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{d4f97b15-a8e2-4223-a242-ca68b901e1fb}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<CLInclude Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</CLInclude>
<CLInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</CLInclude>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<CLInclude Include="scoped.h">
<Filter>Source Files</Filter>
</CLInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CLInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</CLInclude>
</ItemGroup>
<ItemGroup>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,269 +1,269 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h" />
<ClInclude Include="DirectXMeshP.h" />
<ClInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{107a408e-c148-4594-b469-075fe0adb7a5}</ProjectGuid>
<Keyword>StaticLibrary</Keyword>
<ProjectName>DirectXMesh</ProjectName>
<RootNamespace>DirectXMesh</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.10586.0</WindowsTargetPlatformMinVersion>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h" />
<ClInclude Include="DirectXMeshP.h" />
<ClInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{107a408e-c148-4594-b469-075fe0adb7a5}</ProjectGuid>
<Keyword>StaticLibrary</Keyword>
<ProjectName>DirectXMesh</ProjectName>
<RootNamespace>DirectXMesh</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.10586.0</WindowsTargetPlatformMinVersion>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>Bin\Windows10\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows10\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<PreprocessorDefinitions>_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

Просмотреть файл

@ -1,62 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="scoped.h">
<Filter>Source Files</Filter>
</ClInclude>
<ClInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{0e8a37a4-6364-45e5-bc79-c24c97b7107c}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{019eb570-a575-464f-9fa4-eae2fa7ff34c}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</None>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="scoped.h">
<Filter>Source Files</Filter>
</ClInclude>
<ClInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{0e8a37a4-6364-45e5-bc79-c24c97b7107c}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{019eb570-a575-464f-9fa4-eae2fa7ff34c}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</None>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,269 +1,269 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h" />
<ClInclude Include="DirectXMeshP.h" />
<ClInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{86ebe2b8-f2b0-43a0-912f-996c197d7f97}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<ProjectName>DirectXMesh</ProjectName>
<RootNamespace>DirectXMesh</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<ApplicationTypeRevision>8.1</ApplicationTypeRevision>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h" />
<ClInclude Include="DirectXMeshP.h" />
<ClInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{86ebe2b8-f2b0-43a0-912f-996c197d7f97}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<ProjectName>DirectXMesh</ProjectName>
<RootNamespace>DirectXMesh</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<ApplicationTypeRevision>8.1</ApplicationTypeRevision>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<GenerateManifest>false</GenerateManifest>
<OutDir>Bin\Windows8\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Windows8\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<Lib>
<AdditionalOptions>/IGNORE:4264</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

Просмотреть файл

@ -1,62 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="scoped.h">
<Filter>Source Files</Filter>
</ClInclude>
<ClInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{32bf5d94-9970-42cd-a5e7-d77db6fbffa7}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{0139b037-f738-49c5-80e0-a35dba54372c}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</None>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="scoped.h">
<Filter>Source Files</Filter>
</ClInclude>
<ClInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{32bf5d94-9970-42cd-a5e7-d77db6fbffa7}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{0139b037-f738-49c5-80e0-a35dba54372c}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</None>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,179 +1,179 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h" />
<ClInclude Include="DirectXMeshP.h" />
<ClInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{d61dfa02-cc01-4de4-b3f3-b4ebe4a76678}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<ProjectName>DirectXMesh</ProjectName>
<RootNamespace>DirectXMesh</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Phone</ApplicationType>
<ApplicationTypeRevision>8.1</ApplicationTypeRevision>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120_wp81</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120_wp81</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120_wp81</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120_wp81</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<OutDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<OutDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h" />
<ClInclude Include="DirectXMeshP.h" />
<ClInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{d61dfa02-cc01-4de4-b3f3-b4ebe4a76678}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<ProjectName>DirectXMesh</ProjectName>
<RootNamespace>DirectXMesh</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Phone</ApplicationType>
<ApplicationTypeRevision>8.1</ApplicationTypeRevision>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120_wp81</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120_wp81</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120_wp81</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120_wp81</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<OutDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<OutDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\WindowsPhone81\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<SDLCheck>true</SDLCheck>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
<FloatingPointModel>Fast</FloatingPointModel>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

Просмотреть файл

@ -1,62 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{76600727-c5e3-4391-8da1-31033b61259f}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{c70e4b19-005c-49af-825d-ea46c05e38d7}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="scoped.h">
<Filter>Source Files</Filter>
</ClInclude>
<ClInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</None>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{76600727-c5e3-4391-8da1-31033b61259f}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{c70e4b19-005c-49af-825d-ea46c05e38d7}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="scoped.h">
<Filter>Source Files</Filter>
</ClInclude>
<ClInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</None>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,191 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|Durango">
<Configuration>Release</Configuration>
<Platform>Durango</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Durango">
<Configuration>Profile</Configuration>
<Platform>Durango</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Durango">
<Configuration>Debug</Configuration>
<Platform>Durango</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h" />
<ClInclude Include="DirectXMeshP.h" />
<ClInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|Durango'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<RootNamespace>DirectXMesh</RootNamespace>
<ProjectGuid>{1a920ef0-11d7-4a11-9ab7-63c4424ad096}</ProjectGuid>
<DefaultLanguage>en-US</DefaultLanguage>
<Keyword>Win32Proj</Keyword>
<ApplicationEnvironment>title</ApplicationEnvironment>
<!-- - - - -->
<PlatformToolset>v140</PlatformToolset>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<TargetRuntime>Native</TargetRuntime>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<EmbedManifest>false</EmbedManifest>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Durango'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<EmbedManifest>false</EmbedManifest>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<EmbedManifest>false</EmbedManifest>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Durango'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">
<ReferencePath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</ReferencePath>
<LibraryPath>$(Console_SdkLibPath)</LibraryPath>
<LibraryWPath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</LibraryWPath>
<IncludePath>$(Console_SdkIncludeRoot)</IncludePath>
<ExecutablePath>$(Console_SdkRoot)bin;$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSDK_ExecutablePath_x86);$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(MSBuildToolsPath32);$(FxCopDir);$(PATH);</ExecutablePath>
<OutDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Durango'">
<ReferencePath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</ReferencePath>
<LibraryPath>$(Console_SdkLibPath)</LibraryPath>
<LibraryWPath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</LibraryWPath>
<IncludePath>$(Console_SdkIncludeRoot)</IncludePath>
<ExecutablePath>$(Console_SdkRoot)bin;$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSDK_ExecutablePath_x86);$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(MSBuildToolsPath32);$(FxCopDir);$(PATH);</ExecutablePath>
<OutDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">
<ReferencePath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</ReferencePath>
<LibraryPath>$(Console_SdkLibPath)</LibraryPath>
<LibraryWPath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</LibraryWPath>
<IncludePath>$(Console_SdkIncludeRoot)</IncludePath>
<ExecutablePath>$(Console_SdkRoot)bin;$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSDK_ExecutablePath_x86);$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(MSBuildToolsPath32);$(FxCopDir);$(PATH);</ExecutablePath>
<OutDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">
<Link>
<AdditionalDependencies>d3d11_x.lib;combase.lib;kernelx.lib;toolhelpx.lib;uuid.lib;</AdditionalDependencies>
<EntryPointSymbol>
</EntryPointSymbol>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<AdditionalUsingDirectories>$(Console_SdkPackagesRoot);$(Console_SdkWindowsMetadataPath);%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>NDEBUG;__WRL_NO_DEFAULT_LIB__;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>Level4</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<CompileAsWinRT>false</CompileAsWinRT>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Durango'">
<Link>
<AdditionalDependencies>pixEvt.lib;d3d11_x.lib;combase.lib;kernelx.lib;toolhelpx.lib;uuid.lib;</AdditionalDependencies>
<EntryPointSymbol>
</EntryPointSymbol>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<AdditionalUsingDirectories>$(Console_SdkPackagesRoot);$(Console_SdkWindowsMetadataPath);%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>NDEBUG;__WRL_NO_DEFAULT_LIB__;_LIB;PROFILE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>Level4</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<CompileAsWinRT>false</CompileAsWinRT>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">
<Link>
<AdditionalDependencies>d3d11_x.lib;combase.lib;kernelx.lib;toolhelpx.lib;uuid.lib;</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<MinimalRebuild>false</MinimalRebuild>
<AdditionalUsingDirectories>$(Console_SdkPackagesRoot);$(Console_SdkWindowsMetadataPath);%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;__WRL_NO_DEFAULT_LIB__;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CompileAsWinRT>false</CompileAsWinRT>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|Durango">
<Configuration>Release</Configuration>
<Platform>Durango</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Durango">
<Configuration>Profile</Configuration>
<Platform>Durango</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Durango">
<Configuration>Debug</Configuration>
<Platform>Durango</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h" />
<ClInclude Include="DirectXMeshP.h" />
<ClInclude Include="scoped.h" />
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp" />
<ClCompile Include="DirectXMeshClean.cpp" />
<ClCompile Include="DirectXMeshGSAdjacency.cpp" />
<ClCompile Include="DirectXMeshNormals.cpp" />
<ClCompile Include="DirectXMeshOptimize.cpp" />
<ClCompile Include="DirectXMeshRemap.cpp" />
<ClCompile Include="DirectXMeshTangentFrame.cpp" />
<ClCompile Include="DirectXMeshUtil.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|Durango'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp" />
<ClCompile Include="DirectXMeshVBReader.cpp" />
<ClCompile Include="DirectXMeshVBWriter.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<RootNamespace>DirectXMesh</RootNamespace>
<ProjectGuid>{1a920ef0-11d7-4a11-9ab7-63c4424ad096}</ProjectGuid>
<DefaultLanguage>en-US</DefaultLanguage>
<Keyword>Win32Proj</Keyword>
<ApplicationEnvironment>title</ApplicationEnvironment>
<!-- - - - -->
<PlatformToolset>v140</PlatformToolset>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<TargetRuntime>Native</TargetRuntime>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<EmbedManifest>false</EmbedManifest>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Durango'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<EmbedManifest>false</EmbedManifest>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v140</PlatformToolset>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<EmbedManifest>false</EmbedManifest>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Durango'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">
<ReferencePath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</ReferencePath>
<LibraryPath>$(Console_SdkLibPath)</LibraryPath>
<LibraryWPath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</LibraryWPath>
<IncludePath>$(Console_SdkIncludeRoot)</IncludePath>
<ExecutablePath>$(Console_SdkRoot)bin;$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSDK_ExecutablePath_x86);$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(MSBuildToolsPath32);$(FxCopDir);$(PATH);</ExecutablePath>
<OutDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Durango'">
<ReferencePath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</ReferencePath>
<LibraryPath>$(Console_SdkLibPath)</LibraryPath>
<LibraryWPath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</LibraryWPath>
<IncludePath>$(Console_SdkIncludeRoot)</IncludePath>
<ExecutablePath>$(Console_SdkRoot)bin;$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSDK_ExecutablePath_x86);$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(MSBuildToolsPath32);$(FxCopDir);$(PATH);</ExecutablePath>
<OutDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">
<ReferencePath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</ReferencePath>
<LibraryPath>$(Console_SdkLibPath)</LibraryPath>
<LibraryWPath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</LibraryWPath>
<IncludePath>$(Console_SdkIncludeRoot)</IncludePath>
<ExecutablePath>$(Console_SdkRoot)bin;$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSDK_ExecutablePath_x86);$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(MSBuildToolsPath32);$(FxCopDir);$(PATH);</ExecutablePath>
<OutDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\XboxOneXDK_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>DirectXMesh</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">
<Link>
<AdditionalDependencies>d3d11_x.lib;combase.lib;kernelx.lib;toolhelpx.lib;uuid.lib;</AdditionalDependencies>
<EntryPointSymbol>
</EntryPointSymbol>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<AdditionalUsingDirectories>$(Console_SdkPackagesRoot);$(Console_SdkWindowsMetadataPath);%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>NDEBUG;__WRL_NO_DEFAULT_LIB__;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>Level4</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<CompileAsWinRT>false</CompileAsWinRT>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Durango'">
<Link>
<AdditionalDependencies>pixEvt.lib;d3d11_x.lib;combase.lib;kernelx.lib;toolhelpx.lib;uuid.lib;</AdditionalDependencies>
<EntryPointSymbol>
</EntryPointSymbol>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<AdditionalUsingDirectories>$(Console_SdkPackagesRoot);$(Console_SdkWindowsMetadataPath);%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>NDEBUG;__WRL_NO_DEFAULT_LIB__;_LIB;PROFILE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>Level4</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<CompileAsWinRT>false</CompileAsWinRT>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">
<Link>
<AdditionalDependencies>d3d11_x.lib;combase.lib;kernelx.lib;toolhelpx.lib;uuid.lib;</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>DirectXMeshP.h</PrecompiledHeaderFile>
<MinimalRebuild>false</MinimalRebuild>
<AdditionalUsingDirectories>$(Console_SdkPackagesRoot);$(Console_SdkWindowsMetadataPath);%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;__WRL_NO_DEFAULT_LIB__;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CompileAsWinRT>false</CompileAsWinRT>
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

Просмотреть файл

@ -1,64 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</ClInclude>
<ClInclude Include="scoped.h">
<Filter>Source Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="DirectXMesh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DirectXMeshP.h">
<Filter>Source Files</Filter>
</ClInclude>
<ClInclude Include="scoped.h">
<Filter>Source Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="DirectXMesh.inl">
<Filter>Header Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClCompile Include="DirectXMeshAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshClean.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshGSAdjacency.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshNormals.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshOptimize.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshRemap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshTangentFrame.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshUtil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshValidate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DirectXMeshVBWriter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,32 +1,32 @@
//-------------------------------------------------------------------------------------
// scoped.h
//
// Utility header with helper classes for exception-safe handling of resources
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//-------------------------------------------------------------------------------------
#pragma once
#include <assert.h>
#include <memory>
#include <malloc.h>
//---------------------------------------------------------------------------------
struct aligned_deleter { void operator()(void* p) { _aligned_free(p); } };
typedef std::unique_ptr<float[], aligned_deleter> ScopedAlignedArrayFloat;
typedef std::unique_ptr<DirectX::XMVECTOR[], aligned_deleter> ScopedAlignedArrayXMVECTOR;
//---------------------------------------------------------------------------------
struct handle_closer { void operator()(HANDLE h) { assert(h != INVALID_HANDLE_VALUE); if (h) CloseHandle(h); } };
typedef public std::unique_ptr<void, handle_closer> ScopedHandle;
inline HANDLE safe_handle( HANDLE h ) { return (h == INVALID_HANDLE_VALUE) ? 0 : h; }
//-------------------------------------------------------------------------------------
// scoped.h
//
// Utility header with helper classes for exception-safe handling of resources
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//-------------------------------------------------------------------------------------
#pragma once
#include <assert.h>
#include <memory>
#include <malloc.h>
//---------------------------------------------------------------------------------
struct aligned_deleter { void operator()(void* p) { _aligned_free(p); } };
typedef std::unique_ptr<float[], aligned_deleter> ScopedAlignedArrayFloat;
typedef std::unique_ptr<DirectX::XMVECTOR[], aligned_deleter> ScopedAlignedArrayXMVECTOR;
//---------------------------------------------------------------------------------
struct handle_closer { void operator()(HANDLE h) { assert(h != INVALID_HANDLE_VALUE); if (h) CloseHandle(h); } };
typedef public std::unique_ptr<void, handle_closer> ScopedHandle;
inline HANDLE safe_handle( HANDLE h ) { return (h == INVALID_HANDLE_VALUE) ? 0 : h; }

Просмотреть файл

@ -1,47 +1,47 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_Desktop_2013.vcxproj", "{6857F086-F6FE-4150-9ED7-7446F1C1C220}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "meshconvert", "Meshconvert\Meshconvert_Desktop_2013.vcxproj", "{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Profile|Win32 = Profile|Win32
Profile|x64 = Profile|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|Win32.ActiveCfg = Debug|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|Win32.Build.0 = Debug|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|x64.ActiveCfg = Debug|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|x64.Build.0 = Debug|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|Win32.ActiveCfg = Profile|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|Win32.Build.0 = Profile|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|x64.ActiveCfg = Profile|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|x64.Build.0 = Profile|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|Win32.ActiveCfg = Release|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|Win32.Build.0 = Release|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|x64.ActiveCfg = Release|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|x64.Build.0 = Release|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|Win32.ActiveCfg = Debug|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|Win32.Build.0 = Debug|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|x64.ActiveCfg = Debug|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|x64.Build.0 = Debug|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|Win32.ActiveCfg = Profile|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|Win32.Build.0 = Profile|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|x64.ActiveCfg = Profile|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|x64.Build.0 = Profile|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|Win32.ActiveCfg = Release|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|Win32.Build.0 = Release|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|x64.ActiveCfg = Release|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_Desktop_2013.vcxproj", "{6857F086-F6FE-4150-9ED7-7446F1C1C220}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "meshconvert", "Meshconvert\Meshconvert_Desktop_2013.vcxproj", "{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Profile|Win32 = Profile|Win32
Profile|x64 = Profile|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|Win32.ActiveCfg = Debug|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|Win32.Build.0 = Debug|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|x64.ActiveCfg = Debug|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|x64.Build.0 = Debug|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|Win32.ActiveCfg = Profile|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|Win32.Build.0 = Profile|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|x64.ActiveCfg = Profile|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|x64.Build.0 = Profile|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|Win32.ActiveCfg = Release|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|Win32.Build.0 = Release|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|x64.ActiveCfg = Release|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|x64.Build.0 = Release|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|Win32.ActiveCfg = Debug|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|Win32.Build.0 = Debug|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|x64.ActiveCfg = Debug|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|x64.Build.0 = Debug|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|Win32.ActiveCfg = Profile|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|Win32.Build.0 = Profile|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|x64.ActiveCfg = Profile|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|x64.Build.0 = Profile|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|Win32.ActiveCfg = Release|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|Win32.Build.0 = Release|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|x64.ActiveCfg = Release|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Просмотреть файл

@ -1,47 +1,47 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_Desktop_2015.vcxproj", "{6857F086-F6FE-4150-9ED7-7446F1C1C220}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "meshconvert", "Meshconvert\Meshconvert_Desktop_2015.vcxproj", "{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Profile|Win32 = Profile|Win32
Profile|x64 = Profile|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|Win32.ActiveCfg = Debug|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|Win32.Build.0 = Debug|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|x64.ActiveCfg = Debug|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|x64.Build.0 = Debug|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|Win32.ActiveCfg = Profile|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|Win32.Build.0 = Profile|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|x64.ActiveCfg = Profile|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|x64.Build.0 = Profile|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|Win32.ActiveCfg = Release|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|Win32.Build.0 = Release|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|x64.ActiveCfg = Release|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|x64.Build.0 = Release|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|Win32.ActiveCfg = Debug|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|Win32.Build.0 = Debug|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|x64.ActiveCfg = Debug|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|x64.Build.0 = Debug|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|Win32.ActiveCfg = Profile|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|Win32.Build.0 = Profile|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|x64.ActiveCfg = Profile|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|x64.Build.0 = Profile|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|Win32.ActiveCfg = Release|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|Win32.Build.0 = Release|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|x64.ActiveCfg = Release|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_Desktop_2015.vcxproj", "{6857F086-F6FE-4150-9ED7-7446F1C1C220}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "meshconvert", "Meshconvert\Meshconvert_Desktop_2015.vcxproj", "{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Profile|Win32 = Profile|Win32
Profile|x64 = Profile|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|Win32.ActiveCfg = Debug|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|Win32.Build.0 = Debug|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|x64.ActiveCfg = Debug|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Debug|x64.Build.0 = Debug|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|Win32.ActiveCfg = Profile|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|Win32.Build.0 = Profile|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|x64.ActiveCfg = Profile|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Profile|x64.Build.0 = Profile|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|Win32.ActiveCfg = Release|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|Win32.Build.0 = Release|Win32
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|x64.ActiveCfg = Release|x64
{6857F086-F6FE-4150-9ED7-7446F1C1C220}.Release|x64.Build.0 = Release|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|Win32.ActiveCfg = Debug|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|Win32.Build.0 = Debug|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|x64.ActiveCfg = Debug|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Debug|x64.Build.0 = Debug|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|Win32.ActiveCfg = Profile|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|Win32.Build.0 = Profile|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|x64.ActiveCfg = Profile|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Profile|x64.Build.0 = Profile|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|Win32.ActiveCfg = Release|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|Win32.Build.0 = Release|Win32
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|x64.ActiveCfg = Release|x64
{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Просмотреть файл

@ -1,34 +1,34 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2015
VisualStudioVersion = 14.0.22609.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_Windows10.vcxproj", "{107A408E-C148-4594-B469-075FE0ADB7A5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|ARM = Release|ARM
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|ARM.ActiveCfg = Debug|ARM
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|ARM.Build.0 = Debug|ARM
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|x64.ActiveCfg = Debug|x64
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|x64.Build.0 = Debug|x64
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|x86.ActiveCfg = Debug|Win32
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|x86.Build.0 = Debug|Win32
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|ARM.ActiveCfg = Release|ARM
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|ARM.Build.0 = Release|ARM
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|x64.ActiveCfg = Release|x64
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|x64.Build.0 = Release|x64
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|x86.ActiveCfg = Release|Win32
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2015
VisualStudioVersion = 14.0.22609.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_Windows10.vcxproj", "{107A408E-C148-4594-B469-075FE0ADB7A5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|ARM = Release|ARM
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|ARM.ActiveCfg = Debug|ARM
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|ARM.Build.0 = Debug|ARM
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|x64.ActiveCfg = Debug|x64
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|x64.Build.0 = Debug|x64
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|x86.ActiveCfg = Debug|Win32
{107A408E-C148-4594-B469-075FE0ADB7A5}.Debug|x86.Build.0 = Debug|Win32
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|ARM.ActiveCfg = Release|ARM
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|ARM.Build.0 = Release|ARM
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|x64.ActiveCfg = Release|x64
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|x64.Build.0 = Release|x64
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|x86.ActiveCfg = Release|Win32
{107A408E-C148-4594-B469-075FE0ADB7A5}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Просмотреть файл

@ -1,34 +1,34 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_Windows81.vcxproj", "{86EBE2B8-F2B0-43A0-912F-996C197D7F97}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|ARM = Release|ARM
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|ARM.ActiveCfg = Debug|ARM
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|ARM.Build.0 = Debug|ARM
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|Win32.ActiveCfg = Debug|Win32
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|Win32.Build.0 = Debug|Win32
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|x64.ActiveCfg = Debug|x64
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|x64.Build.0 = Debug|x64
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|ARM.ActiveCfg = Release|ARM
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|ARM.Build.0 = Release|ARM
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|Win32.ActiveCfg = Release|Win32
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|Win32.Build.0 = Release|Win32
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|x64.ActiveCfg = Release|x64
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_Windows81.vcxproj", "{86EBE2B8-F2B0-43A0-912F-996C197D7F97}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|ARM = Release|ARM
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|ARM.ActiveCfg = Debug|ARM
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|ARM.Build.0 = Debug|ARM
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|Win32.ActiveCfg = Debug|Win32
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|Win32.Build.0 = Debug|Win32
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|x64.ActiveCfg = Debug|x64
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Debug|x64.Build.0 = Debug|x64
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|ARM.ActiveCfg = Release|ARM
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|ARM.Build.0 = Release|ARM
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|Win32.ActiveCfg = Release|Win32
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|Win32.Build.0 = Release|Win32
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|x64.ActiveCfg = Release|x64
{86EBE2B8-F2B0-43A0-912F-996C197D7F97}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Просмотреть файл

@ -1,28 +1,28 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_WindowsPhone81.vcxproj", "{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|Win32 = Debug|Win32
Release|ARM = Release|ARM
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Debug|ARM.ActiveCfg = Debug|ARM
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Debug|ARM.Build.0 = Debug|ARM
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Debug|Win32.ActiveCfg = Debug|Win32
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Debug|Win32.Build.0 = Debug|Win32
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Release|ARM.ActiveCfg = Release|ARM
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Release|ARM.Build.0 = Release|ARM
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Release|Win32.ActiveCfg = Release|Win32
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_WindowsPhone81.vcxproj", "{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|Win32 = Debug|Win32
Release|ARM = Release|ARM
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Debug|ARM.ActiveCfg = Debug|ARM
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Debug|ARM.Build.0 = Debug|ARM
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Debug|Win32.ActiveCfg = Debug|Win32
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Debug|Win32.Build.0 = Debug|Win32
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Release|ARM.ActiveCfg = Release|ARM
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Release|ARM.Build.0 = Release|ARM
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Release|Win32.ActiveCfg = Release|Win32
{D61DFA02-CC01-4DE4-B3F3-B4EBE4A76678}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Просмотреть файл

@ -1,25 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_XboxOneXDK_2015.vcxproj", "{1A920EF0-11D7-4A11-9AB7-63C4424AD096}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Durango = Debug|Durango
Profile|Durango = Profile|Durango
Release|Durango = Release|Durango
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Debug|Durango.ActiveCfg = Debug|Durango
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Debug|Durango.Build.0 = Debug|Durango
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Profile|Durango.ActiveCfg = Profile|Durango
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Profile|Durango.Build.0 = Profile|Durango
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Release|Durango.ActiveCfg = Release|Durango
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Release|Durango.Build.0 = Release|Durango
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectXMesh", "DirectXMesh\DirectXMesh_XboxOneXDK_2015.vcxproj", "{1A920EF0-11D7-4A11-9AB7-63C4424AD096}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Durango = Debug|Durango
Profile|Durango = Profile|Durango
Release|Durango = Release|Durango
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Debug|Durango.ActiveCfg = Debug|Durango
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Debug|Durango.Build.0 = Debug|Durango
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Profile|Durango.ActiveCfg = Profile|Durango
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Profile|Durango.Build.0 = Profile|Durango
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Release|Durango.ActiveCfg = Release|Durango
{1A920EF0-11D7-4A11-9AB7-63C4424AD096}.Release|Durango.Build.0 = Release|Durango
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

42
MIT.txt
Просмотреть файл

@ -1,21 +1,21 @@
The MIT License (MIT)
Copyright (c) 2016 Microsoft Corp
Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be included in all copies
or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
The MIT License (MIT)
Copyright (c) 2016 Microsoft Corp
Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be included in all copies
or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,125 +1,125 @@
//--------------------------------------------------------------------------------------
// File: Mesh.h
//
// Mesh processing helper class
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//--------------------------------------------------------------------------------------
#include <windows.h>
#include <memory>
#include <string>
#include <vector>
#include <stdint.h>
#if defined(_XBOX_ONE) && defined(_TITLE)
#include <d3d11_x.h>
#define DCOMMON_H_INCLUDED
#else
#include <d3d11_1.h>
#endif
#include <directxmath.h>
#include "directxmesh.h"
class Mesh
{
public:
Mesh() : mnFaces(0), mnVerts(0) {}
Mesh(Mesh&& moveFrom);
Mesh& operator= (Mesh&& moveFrom);
Mesh(Mesh const&) = delete;
Mesh& operator= (Mesh const&) = delete;
// Methods
void Clear();
HRESULT SetIndexData( _In_ size_t nFaces, _In_reads_(nFaces*3) const uint16_t* indices, _In_reads_opt_(nFaces) uint32_t* attributes = nullptr );
HRESULT SetIndexData( _In_ size_t nFaces, _In_reads_(nFaces*3) const uint32_t* indices, _In_reads_opt_(nFaces) uint32_t* attributes = nullptr );
HRESULT SetVertexData( _Inout_ DirectX::VBReader& reader, _In_ size_t nVerts );
HRESULT Validate( _In_ DWORD flags, _In_opt_ std::wstring* msgs ) const;
HRESULT Clean();
HRESULT GenerateAdjacency( _In_ float epsilon );
HRESULT ComputeNormals( _In_ DWORD flags );
HRESULT ComputeTangentFrame( _In_ bool bitangents );
HRESULT Optimize( _In_ uint32_t vertexCache = DirectX::OPTFACES_V_DEFAULT, _In_ uint32_t restart = DirectX::OPTFACES_R_DEFAULT );
HRESULT ReverseWinding();
HRESULT InvertUTexCoord();
HRESULT InvertVTexCoord();
HRESULT ReverseHandedness();
// Accessors
const uint32_t* GetAttributeBuffer() const { return mAttributes.get(); }
const uint32_t* GetAdjacencyBuffer() const { return mAdjacency.get(); }
const DirectX::XMFLOAT3* GetPositionBuffer() const { return mPositions.get(); }
const DirectX::XMFLOAT3* GetNormalBuffer() const { return mNormals.get(); }
const DirectX::XMFLOAT2* GetTexCoordBuffer() const { return mTexCoords.get(); }
const DirectX::XMFLOAT4* GetTangentBuffer() const { return mTangents.get(); }
size_t GetFaceCount() const { return mnFaces; }
size_t GetVertexCount() const { return mnVerts; }
bool Is16BitIndexBuffer() const;
const uint32_t* GetIndexBuffer() const { return mIndices.get(); }
std::unique_ptr<uint16_t []> GetIndexBuffer16() const;
HRESULT GetVertexBuffer(_Inout_ DirectX::VBWriter& writer ) const;
// Save mesh to file
struct Material
{
std::wstring name;
bool perVertexColor;
float specularPower;
float alpha;
DirectX::XMFLOAT3 ambientColor;
DirectX::XMFLOAT3 diffuseColor;
DirectX::XMFLOAT3 specularColor;
DirectX::XMFLOAT3 emissiveColor;
std::wstring texture;
};
HRESULT ExportToVBO( _In_z_ const wchar_t* szFileName ) const;
HRESULT ExportToCMO( _In_z_ const wchar_t* szFileName, _In_ size_t nMaterials, _In_reads_opt_(nMaterials) const Material* materials ) const;
HRESULT ExportToSDKMESH( _In_z_ const wchar_t* szFileName, _In_ size_t nMaterials, _In_reads_opt_(nMaterials) const Material* materials ) const;
// Create mesh from file
static HRESULT CreateFromVBO( _In_z_ const wchar_t* szFileName, _Inout_ std::unique_ptr<Mesh>& result );
private:
size_t mnFaces;
size_t mnVerts;
std::unique_ptr<uint32_t[]> mIndices;
std::unique_ptr<uint32_t[]> mAttributes;
std::unique_ptr<uint32_t[]> mAdjacency;
std::unique_ptr<DirectX::XMFLOAT3[]> mPositions;
std::unique_ptr<DirectX::XMFLOAT3[]> mNormals;
std::unique_ptr<DirectX::XMFLOAT4[]> mTangents;
std::unique_ptr<DirectX::XMFLOAT3[]> mBiTangents;
std::unique_ptr<DirectX::XMFLOAT2[]> mTexCoords;
std::unique_ptr<DirectX::XMFLOAT4[]> mColors;
std::unique_ptr<DirectX::XMFLOAT4[]> mBlendIndices;
std::unique_ptr<DirectX::XMFLOAT4[]> mBlendWeights;
//--------------------------------------------------------------------------------------
// File: Mesh.h
//
// Mesh processing helper class
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkID=324981
//--------------------------------------------------------------------------------------
#include <windows.h>
#include <memory>
#include <string>
#include <vector>
#include <stdint.h>
#if defined(_XBOX_ONE) && defined(_TITLE)
#include <d3d11_x.h>
#define DCOMMON_H_INCLUDED
#else
#include <d3d11_1.h>
#endif
#include <directxmath.h>
#include "directxmesh.h"
class Mesh
{
public:
Mesh() : mnFaces(0), mnVerts(0) {}
Mesh(Mesh&& moveFrom);
Mesh& operator= (Mesh&& moveFrom);
Mesh(Mesh const&) = delete;
Mesh& operator= (Mesh const&) = delete;
// Methods
void Clear();
HRESULT SetIndexData( _In_ size_t nFaces, _In_reads_(nFaces*3) const uint16_t* indices, _In_reads_opt_(nFaces) uint32_t* attributes = nullptr );
HRESULT SetIndexData( _In_ size_t nFaces, _In_reads_(nFaces*3) const uint32_t* indices, _In_reads_opt_(nFaces) uint32_t* attributes = nullptr );
HRESULT SetVertexData( _Inout_ DirectX::VBReader& reader, _In_ size_t nVerts );
HRESULT Validate( _In_ DWORD flags, _In_opt_ std::wstring* msgs ) const;
HRESULT Clean();
HRESULT GenerateAdjacency( _In_ float epsilon );
HRESULT ComputeNormals( _In_ DWORD flags );
HRESULT ComputeTangentFrame( _In_ bool bitangents );
HRESULT Optimize( _In_ uint32_t vertexCache = DirectX::OPTFACES_V_DEFAULT, _In_ uint32_t restart = DirectX::OPTFACES_R_DEFAULT );
HRESULT ReverseWinding();
HRESULT InvertUTexCoord();
HRESULT InvertVTexCoord();
HRESULT ReverseHandedness();
// Accessors
const uint32_t* GetAttributeBuffer() const { return mAttributes.get(); }
const uint32_t* GetAdjacencyBuffer() const { return mAdjacency.get(); }
const DirectX::XMFLOAT3* GetPositionBuffer() const { return mPositions.get(); }
const DirectX::XMFLOAT3* GetNormalBuffer() const { return mNormals.get(); }
const DirectX::XMFLOAT2* GetTexCoordBuffer() const { return mTexCoords.get(); }
const DirectX::XMFLOAT4* GetTangentBuffer() const { return mTangents.get(); }
size_t GetFaceCount() const { return mnFaces; }
size_t GetVertexCount() const { return mnVerts; }
bool Is16BitIndexBuffer() const;
const uint32_t* GetIndexBuffer() const { return mIndices.get(); }
std::unique_ptr<uint16_t []> GetIndexBuffer16() const;
HRESULT GetVertexBuffer(_Inout_ DirectX::VBWriter& writer ) const;
// Save mesh to file
struct Material
{
std::wstring name;
bool perVertexColor;
float specularPower;
float alpha;
DirectX::XMFLOAT3 ambientColor;
DirectX::XMFLOAT3 diffuseColor;
DirectX::XMFLOAT3 specularColor;
DirectX::XMFLOAT3 emissiveColor;
std::wstring texture;
};
HRESULT ExportToVBO( _In_z_ const wchar_t* szFileName ) const;
HRESULT ExportToCMO( _In_z_ const wchar_t* szFileName, _In_ size_t nMaterials, _In_reads_opt_(nMaterials) const Material* materials ) const;
HRESULT ExportToSDKMESH( _In_z_ const wchar_t* szFileName, _In_ size_t nMaterials, _In_reads_opt_(nMaterials) const Material* materials ) const;
// Create mesh from file
static HRESULT CreateFromVBO( _In_z_ const wchar_t* szFileName, _Inout_ std::unique_ptr<Mesh>& result );
private:
size_t mnFaces;
size_t mnVerts;
std::unique_ptr<uint32_t[]> mIndices;
std::unique_ptr<uint32_t[]> mAttributes;
std::unique_ptr<uint32_t[]> mAdjacency;
std::unique_ptr<DirectX::XMFLOAT3[]> mPositions;
std::unique_ptr<DirectX::XMFLOAT3[]> mNormals;
std::unique_ptr<DirectX::XMFLOAT4[]> mTangents;
std::unique_ptr<DirectX::XMFLOAT3[]> mBiTangents;
std::unique_ptr<DirectX::XMFLOAT2[]> mTexCoords;
std::unique_ptr<DirectX::XMFLOAT4[]> mColors;
std::unique_ptr<DirectX::XMFLOAT4[]> mBlendIndices;
std::unique_ptr<DirectX::XMFLOAT4[]> mBlendWeights;
};

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,401 +1,401 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Win32">
<Configuration>Profile</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|x64">
<Configuration>Profile</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>meshconvert</ProjectName>
<ProjectGuid>{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}</ProjectGuid>
<RootNamespace>meshconvert</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="..\DirectXMesh\DirectXMesh_Desktop_2013.vcxproj">
<Project>{6857f086-f6fe-4150-9ed7-7446f1c1c220}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Meshconvert.cpp" />
<ClCompile Include="Mesh.cpp" />
<ClInclude Include="..\Utilities\WaveFrontReader.h" />
<CLInclude Include="Mesh.h" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Meshconvert.rc" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Win32">
<Configuration>Profile</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|x64">
<Configuration>Profile</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>meshconvert</ProjectName>
<ProjectGuid>{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}</ProjectGuid>
<RootNamespace>meshconvert</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<OutDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2013\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="..\DirectXMesh\DirectXMesh_Desktop_2013.vcxproj">
<Project>{6857f086-f6fe-4150-9ed7-7446f1c1c220}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Meshconvert.cpp" />
<ClCompile Include="Mesh.cpp" />
<ClInclude Include="..\Utilities\WaveFrontReader.h" />
<CLInclude Include="Mesh.h" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Meshconvert.rc" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

Просмотреть файл

@ -1,26 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns:atg="http://atg.xbox.com" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Resource Files">
<UniqueIdentifier>{8e114980-c1a3-4ada-ad7c-83caadf5daeb}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\Utilities\WaveFrontReader.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Meshconvert.cpp" />
<ClCompile Include="Mesh.cpp" />
<CLInclude Include="Mesh.h" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Meshconvert.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns:atg="http://atg.xbox.com" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Resource Files">
<UniqueIdentifier>{8e114980-c1a3-4ada-ad7c-83caadf5daeb}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\Utilities\WaveFrontReader.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Meshconvert.cpp" />
<ClCompile Include="Mesh.cpp" />
<CLInclude Include="Mesh.h" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Meshconvert.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,401 +1,401 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Win32">
<Configuration>Profile</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|x64">
<Configuration>Profile</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>meshconvert</ProjectName>
<ProjectGuid>{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}</ProjectGuid>
<RootNamespace>meshconvert</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="..\DirectXMesh\DirectXMesh_Desktop_2015.vcxproj">
<Project>{6857f086-f6fe-4150-9ed7-7446f1c1c220}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Meshconvert.cpp" />
<ClCompile Include="Mesh.cpp" />
<ClInclude Include="..\Utilities\WaveFrontReader.h" />
<CLInclude Include="Mesh.h" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Meshconvert.rc" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Win32">
<Configuration>Profile</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|x64">
<Configuration>Profile</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>meshconvert</ProjectName>
<ProjectGuid>{6D4CFD0E-8772-462A-9AC1-7DBAD9C16880}</ProjectGuid>
<RootNamespace>meshconvert</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>true</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<OutDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Bin\Desktop_2015\$(Platform)\$(Configuration)\</IntDir>
<TargetName>meshconvert</TargetName>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>true</GenerateManifest>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|X64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OpenMPSupport>true</OpenMPSupport>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FloatingPointModel>Fast</FloatingPointModel>
<ExceptionHandling>Sync</ExceptionHandling>
<AdditionalIncludeDirectories>..\DirectXMesh;..\Utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>ole32.lib;oleaut32.lib;windowscodecs.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LargeAddressAware>true</LargeAddressAware>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<Manifest>
<EnableDPIAwareness>false</EnableDPIAwareness>
</Manifest>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="..\DirectXMesh\DirectXMesh_Desktop_2015.vcxproj">
<Project>{6857f086-f6fe-4150-9ed7-7446f1c1c220}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Meshconvert.cpp" />
<ClCompile Include="Mesh.cpp" />
<ClInclude Include="..\Utilities\WaveFrontReader.h" />
<CLInclude Include="Mesh.h" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Meshconvert.rc" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

Просмотреть файл

@ -1,26 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns:atg="http://atg.xbox.com" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Resource Files">
<UniqueIdentifier>{8e114980-c1a3-4ada-ad7c-83caadf5daeb}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\Utilities\WaveFrontReader.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Meshconvert.cpp" />
<ClCompile Include="Mesh.cpp" />
<CLInclude Include="Mesh.h" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Meshconvert.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns:atg="http://atg.xbox.com" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Resource Files">
<UniqueIdentifier>{8e114980-c1a3-4ada-ad7c-83caadf5daeb}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\Utilities\WaveFrontReader.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Meshconvert.cpp" />
<ClCompile Include="Mesh.cpp" />
<CLInclude Include="Mesh.h" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Meshconvert.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,76 +1,76 @@
// Microsoft Visual C++ generated resource script.
//
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define IDC_STATIC -1
#include <WinResRc.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_MAIN_ICON ICON "directx.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#define IDC_STATIC -1\r\n"
"#include <winresrc.h>\r\n"
"\r\n"
"\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
// Microsoft Visual C++ generated resource script.
//
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define IDC_STATIC -1
#include <WinResRc.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_MAIN_ICON ICON "directx.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#define IDC_STATIC -1\r\n"
"#include <winresrc.h>\r\n"
"\r\n"
"\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

Просмотреть файл

@ -1,106 +1,106 @@
DIRECTX MESH LIBRARY (DirectXMesh)
------------------------------------
Copyright (c) Microsoft Corporation. All rights reserved.
August 2, 2016
This package contains DirectXMesh, a shared source library for performing various geometry
content processing operations including generating normals and tangent frames, triangle
adjacency computations, and vertex cache optimization.
The source is written for Visual Studio 2013 or 2015. It is recommended that you
make use of VS 2013 Update 5 or VS 2015 Update 3 and Windows 7 Service Pack 1 or later.
These components are designed to work without requiring any content from the DirectX SDK. For details,
see "Where is the DirectX SDK?" <http://msdn.microsoft.com/en-us/library/ee663275.aspx>.
DirectXMesh\
This contains the DirectXMesh library.
Note that the majority of the header files here are intended for internal implementation
of the library only (DirectXMeshP.h and scoped.h). Only DirectXMesh.h is meant as a
'public' header for the library.
Utilities\
This contains helper code related to mesh processing that is not general enough to be
part of the DirectXMesh library.
WaveFrontReader.h - Contains a simple C++ class for reading mesh data from a WaveFront OBJ file.
Meshconvert\
This DirectXMesh sample is an implementation of the "meshconvert" command-line texture utility
from the DirectX SDK utilizing DirectXMesh rather than D3DX.
Note this tool does not support legacy .X files, but can export CMO, SDKMESH, and VBO files.
All content and source code for this package are subject to the terms of the MIT License.
<http://opensource.org/licenses/MIT>.
Documentation is available at <https://github.com/Microsoft/DirectXMesh/wiki>.
For the latest version of DirectXMesh, bug reports, etc. please visit the project site.
http://go.microsoft.com/fwlink/?LinkID=324981
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the
Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
https://opensource.microsoft.com/codeofconduct/
---------------
RELEASE HISTORY
---------------
August 2, 2016
Updated for VS 2015 Update 3 and Windows 10 SDK (14393)
July 19, 2016
meshconvert command-line tool updated with -flipu switch
June 27, 2016
Code cleanup
April 26, 2016
Retired VS 2012 projects and obsolete adapter code
Minor code and project file cleanup
November 30, 2015
meshconvert command-line tool updated with -flipv and -flipz switches; removed -fliptc
Updated for VS 2015 Update 1 and Windows 10 SDK (10586)
October 30, 2015
Minor code cleanup
August 18, 2015
Xbox One platform updates
July 29, 2015
Updated for VS 2015 and Windows 10 SDK RTM
Retired VS 2010 projects
WaveFrontReader: updated utility to minimize debug output
July 8, 2015
Minor SAL fix and project cleanup
March 27, 2015
Added projects for Windows apps Technical Preview
Fixed attributes usage for OptimizeFacesEx
meshconvert: fix when importing from .vbo
Minor code cleanup
November 14, 2014
meshconvert: sample improvements and fixes
Added workarounds for potential compiler bug when using VB reader/writer
October 28, 2014
meshconvert command-line sample
Added VBReader/VBWriter::GetElement method
Added more ComputeTangentFrame overloads
Explicit calling-convention annotation for public headers
Windows phone 8.1 platform support
Minor code and project cleanup
June 27, 2014
DIRECTX MESH LIBRARY (DirectXMesh)
------------------------------------
Copyright (c) Microsoft Corporation. All rights reserved.
August 2, 2016
This package contains DirectXMesh, a shared source library for performing various geometry
content processing operations including generating normals and tangent frames, triangle
adjacency computations, and vertex cache optimization.
The source is written for Visual Studio 2013 or 2015. It is recommended that you
make use of VS 2013 Update 5 or VS 2015 Update 3 and Windows 7 Service Pack 1 or later.
These components are designed to work without requiring any content from the DirectX SDK. For details,
see "Where is the DirectX SDK?" <http://msdn.microsoft.com/en-us/library/ee663275.aspx>.
DirectXMesh\
This contains the DirectXMesh library.
Note that the majority of the header files here are intended for internal implementation
of the library only (DirectXMeshP.h and scoped.h). Only DirectXMesh.h is meant as a
'public' header for the library.
Utilities\
This contains helper code related to mesh processing that is not general enough to be
part of the DirectXMesh library.
WaveFrontReader.h - Contains a simple C++ class for reading mesh data from a WaveFront OBJ file.
Meshconvert\
This DirectXMesh sample is an implementation of the "meshconvert" command-line texture utility
from the DirectX SDK utilizing DirectXMesh rather than D3DX.
Note this tool does not support legacy .X files, but can export CMO, SDKMESH, and VBO files.
All content and source code for this package are subject to the terms of the MIT License.
<http://opensource.org/licenses/MIT>.
Documentation is available at <https://github.com/Microsoft/DirectXMesh/wiki>.
For the latest version of DirectXMesh, bug reports, etc. please visit the project site.
http://go.microsoft.com/fwlink/?LinkID=324981
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the
Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
https://opensource.microsoft.com/codeofconduct/
---------------
RELEASE HISTORY
---------------
August 2, 2016
Updated for VS 2015 Update 3 and Windows 10 SDK (14393)
July 19, 2016
meshconvert command-line tool updated with -flipu switch
June 27, 2016
Code cleanup
April 26, 2016
Retired VS 2012 projects and obsolete adapter code
Minor code and project file cleanup
November 30, 2015
meshconvert command-line tool updated with -flipv and -flipz switches; removed -fliptc
Updated for VS 2015 Update 1 and Windows 10 SDK (10586)
October 30, 2015
Minor code cleanup
August 18, 2015
Xbox One platform updates
July 29, 2015
Updated for VS 2015 and Windows 10 SDK RTM
Retired VS 2010 projects
WaveFrontReader: updated utility to minimize debug output
July 8, 2015
Minor SAL fix and project cleanup
March 27, 2015
Added projects for Windows apps Technical Preview
Fixed attributes usage for OptimizeFacesEx
meshconvert: fix when importing from .vbo
Minor code cleanup
November 14, 2014
meshconvert: sample improvements and fixes
Added workarounds for potential compiler bug when using VB reader/writer
October 28, 2014
meshconvert command-line sample
Added VBReader/VBWriter::GetElement method
Added more ComputeTangentFrame overloads
Explicit calling-convention annotation for public headers
Windows phone 8.1 platform support
Minor code and project cleanup
June 27, 2014
Original release

Разница между файлами не показана из-за своего большого размера Загрузить разницу