MCPcopy Create free account
hub / github.com/carbonengine/trinity / OnPrepareResources

Method OnPrepareResources

trinity/Tr2GrannyPrimitiveSet.cpp:54–133  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

52}
53
54bool Tr2GrannyPrimitiveSet::OnPrepareResources()
55{
56 USE_MAIN_THREAD_RENDER_CONTEXT();
57 if( m_vertexDeclHandle == Tr2EffectStateManager::UNINITIALIZED_DECLARATION )
58 {
59 Tr2VertexDefinition vd;
60 vd.Add( vd.FLOAT32_3, vd.POSITION );
61 vd.Add( vd.FLOAT32_3, vd.NORMAL );
62 vd.Add( vd.FLOAT32_4, vd.TEXCOORD );
63
64 m_vertexDeclHandle = Tr2EffectStateManager::GetVertexDeclarationHandle( vd );
65 if( m_vertexDeclHandle == Tr2EffectStateManager::UNINITIALIZED_DECLARATION )
66 {
67 return false;
68 }
69 }
70
71 if( m_points.size() )
72 {
73 if( !m_vertexBuffer.IsValid() )
74 {
75 USE_MAIN_THREAD_RENDER_CONTEXT();
76 CR_RETURN_VAL(
77 m_vertexBuffer.Create(
78 uint32_t( sizeof( TriangleVertex ) ),
79 uint32_t( m_points.size() ),
80 Tr2GpuUsage::VERTEX_BUFFER,
81 Tr2CpuUsage::WRITE_OFTEN,
82 nullptr,
83 renderContext ),
84 false );
85 }
86
87 TriangleVertex* vertexBuffer;
88 CR_RETURN_VAL( m_vertexBuffer.MapForWriting( vertexBuffer, renderContext ), false );
89
90 memcpy( vertexBuffer, &m_points[0], sizeof( TriangleVertex ) * m_points.size() );
91
92 Vector3 center( 0.0f, 0.0f, 0.0f );
93 float radius = 0.0f;
94 ComputeBoundingSphere( &vertexBuffer[0].m_position, (unsigned int)m_points.size(), sizeof( TriangleVertex ), center, radius );
95
96 m_boundingSphere.x = center.x;
97 m_boundingSphere.y = center.y;
98 m_boundingSphere.z = center.z;
99 m_boundingSphere.w = radius;
100
101 m_vertexBuffer.UnmapForWriting( renderContext );
102 }
103
104 if( m_triangleIndices.size() )
105 {
106 USE_MAIN_THREAD_RENDER_CONTEXT();
107 CR_RETURN_VAL(
108 m_triangleIndexBuffer.Create(
109 4,
110 (unsigned int)m_triangleIndices.size(),
111 Tr2GpuUsage::INDEX_BUFFER,

Callers

nothing calls this directly

Calls 7

sizeMethod · 0.80
AddMethod · 0.45
IsValidMethod · 0.45
CreateMethod · 0.45
MapForWritingMethod · 0.45
UnmapForWritingMethod · 0.45

Tested by

no test coverage detected