MCPcopy Create free account
hub / github.com/beefytech/Beef / CreateModelInstance

Method CreateModelInstance

BeefySysLib/platform/win/DXRenderDevice.cpp:1065–1208  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1063};
1064
1065ModelInstance* DXRenderDevice::CreateModelInstance(ModelDef* modelDef, ModelCreateFlags flags)
1066{
1067 DXModelInstance* dxModelInstance = new DXModelInstance(modelDef);
1068
1069 ////
1070
1071 VertexDefData vertexDefData[] =
1072 {
1073 {VertexElementUsage_Position3D, 0, VertexElementFormat_Vector3},
1074 {VertexElementUsage_Color, 0, VertexElementFormat_Color},
1075 {VertexElementUsage_TextureCoordinate, 0, VertexElementFormat_Vector2},
1076 {VertexElementUsage_Normal, 0, VertexElementFormat_Vector3},
1077 {VertexElementUsage_TextureCoordinate, 1, VertexElementFormat_Vector2},
1078 {VertexElementUsage_Tangent, 0, VertexElementFormat_Vector3}
1079 };
1080
1081 auto vertexDefinition = CreateVertexDefinition(vertexDefData, sizeof(vertexDefData) / sizeof(vertexDefData[0]));
1082 RenderState* renderState = NULL;
1083 if ((flags & ModelCreateFlags_NoSetRenderState) == 0)
1084 {
1085 renderState = CreateRenderState(mDefaultRenderState);
1086 renderState->mShader = LoadShader(gBFApp->mInstallDir + "/shaders/ModelStd", vertexDefinition);
1087 renderState->mTexWrap = true;
1088 renderState->mDepthFunc = DepthFunc_LessEqual;
1089 renderState->mWriteDepthBuffer = true;
1090 }
1091 delete vertexDefinition;
1092
1093 dxModelInstance->mRenderState = renderState;
1094
1095 ////
1096
1097 dxModelInstance->mD3DRenderDevice = this;
1098 dxModelInstance->mDXModelMeshs.Resize(modelDef->mMeshes.size());
1099 int dxMeshIdx = 0;
1100
1101 for (int meshIdx = 0; meshIdx < (int)modelDef->mMeshes.size(); meshIdx++)
1102 {
1103 ModelMesh* mesh = &modelDef->mMeshes[meshIdx];
1104 DXModelMesh* dxMesh = &dxModelInstance->mDXModelMeshs[dxMeshIdx];
1105
1106 dxMesh->mPrimitives.Resize(mesh->mPrimitives.size());
1107
1108 for (int primitivesIdx = 0 ; primitivesIdx < (int)mesh->mPrimitives.size(); primitivesIdx++)
1109 {
1110 auto primitives = &mesh->mPrimitives[primitivesIdx];
1111 auto dxPrimitives = &dxMesh->mPrimitives[primitivesIdx];
1112
1113// String texPath = mesh->mTexFileName;
1114// if (!texPath.IsEmpty())
1115// {
1116// if ((int)texPath.IndexOf(':') == -1)
1117// texPath = modelDef->mLoadDir + "Textures/" + texPath;
1118// //texPath = gBFApp->mInstallDir + L"models/Textures/" + texPath;
1119//
1120// dxPrimitives->mTexture = (DXTexture*)((RenderDevice*)this)->LoadTexture(texPath, TextureFlag_NoPremult);
1121// }
1122

Callers

nothing calls this directly

Calls 5

ResizeMethod · 0.45
sizeMethod · 0.45
IsEmptyMethod · 0.45
AddMethod · 0.45
LoadTextureMethod · 0.45

Tested by

no test coverage detected