| 1210 | } |
| 1211 | |
| 1212 | bool Tr2Sprite2dScene::OnPrepareResources() |
| 1213 | { |
| 1214 | if( m_vertexDecl == Tr2EffectStateManager::UNINITIALIZED_DECLARATION ) |
| 1215 | { |
| 1216 | if( s_vertexDesc.empty() ) |
| 1217 | { |
| 1218 | // This vertex declaration matches the Tr2Sprite2dD3DVertex defined in ITr2Sprite2dRenderer.h |
| 1219 | s_vertexDesc.Add( s_vertexDesc.FLOAT32_3, s_vertexDesc.POSITION ); |
| 1220 | s_vertexDesc.Add( s_vertexDesc.FLOAT32_4, s_vertexDesc.COLOR, 0 ); |
| 1221 | |
| 1222 | // Texture coordinates, primary texture |
| 1223 | s_vertexDesc.Add( s_vertexDesc.FLOAT32_2, s_vertexDesc.TEXCOORD, 0 ); |
| 1224 | |
| 1225 | // Texture coordinates, secondary texture |
| 1226 | s_vertexDesc.Add( s_vertexDesc.FLOAT32_2, s_vertexDesc.TEXCOORD, 1 ); |
| 1227 | |
| 1228 | // Clip rect |
| 1229 | s_vertexDesc.Add( s_vertexDesc.FLOAT32_4, s_vertexDesc.TEXCOORD, 2 ); |
| 1230 | |
| 1231 | // Glow brightness |
| 1232 | s_vertexDesc.Add( s_vertexDesc.FLOAT32_1, s_vertexDesc.TEXCOORD, 3 ); |
| 1233 | |
| 1234 | // Matrix index |
| 1235 | s_vertexDesc.Add( s_vertexDesc.UBYTE_4, s_vertexDesc.BLENDINDICES ); |
| 1236 | |
| 1237 | // Outline color |
| 1238 | s_vertexDesc.Add( s_vertexDesc.FLOAT32_4, s_vertexDesc.COLOR, 1 ); |
| 1239 | |
| 1240 | // Outline threshold |
| 1241 | s_vertexDesc.Add( s_vertexDesc.FLOAT32_1, s_vertexDesc.TEXCOORD, 4 ); |
| 1242 | } |
| 1243 | |
| 1244 | m_vertexDecl = Tr2EffectStateManager::GetVertexDeclarationHandle( s_vertexDesc ); |
| 1245 | } |
| 1246 | |
| 1247 | unsigned int indexCount = m_maxSpriteCount * 6; |
| 1248 | unsigned int ibSize = indexCount * sizeof( uint32_t ); |
| 1249 | unsigned int vbSize = m_maxSpriteCount * 4 * sizeof( Tr2Sprite2dD3DVertex ); |
| 1250 | |
| 1251 | if( !m_vertexBuffer.Create( vbSize ) ) |
| 1252 | { |
| 1253 | CCP_LOGERR( "Tr2Sprite2dScene::OnPrepareResources failed to create streaming vertex buffer" ); |
| 1254 | return false; |
| 1255 | } |
| 1256 | m_vertexBuffer.SetName( "UI Vertex Buffer" ); |
| 1257 | |
| 1258 | if( !m_indexBuffer.Create( indexCount, 4 ) ) |
| 1259 | { |
| 1260 | CCP_LOGERR( "Tr2Sprite2dScene::OnPrepareResources failed to create streaming index buffer" ); |
| 1261 | return false; |
| 1262 | } |
| 1263 | m_indexBuffer.SetName( "UI Index Buffer" ); |
| 1264 | |
| 1265 | m_vertexBufferData.resize( "Tr2Sprite2dScene::m_vertexBufferData", vbSize ); |
| 1266 | if( m_vertexBufferData.empty() ) |
| 1267 | { |
| 1268 | CCP_LOGERR( "Tr2Sprite2dScene::OnPrepareResources failed to allocate vertex buffer mirror" ); |
| 1269 | return false; |
nothing calls this directly
no test coverage detected