SpiecsEngine
 
Loading...
Searching...
No Matches

◆ OnCreatePack()

bool Spices::SpherePack::OnCreatePack ( bool isCreateBuffer = true)
overridevirtual

This interface is used for build specific mesh pack data.

Parameters
[in]isCreateBufferWhether it needs to create buffer.
Returns
Returns true if Create Pack successfully.

Reimplemented from Spices::MeshPack.

Definition at line 563 of file MeshPack.cpp.

564 {
566
567 if (MeshPack::OnCreatePack(isCreateBuffer)) return true;
568
569 for (uint32_t i = 0; i < m_Rows; i++)
570 {
571 const float rowRamp = i / static_cast<float>(m_Rows - 1) * 180.0f; // 0 ~ 180
572
573 for (uint32_t j = 0; j < m_Columns; j++)
574 {
575 const uint32_t vtIndex = i * m_Columns + j;
576 const float colRamp = j * 360.0f / static_cast<float>(m_Columns - 1); // 0 ~ 360
577
578 glm::vec3 position{ glm::sin(glm::radians(rowRamp)) * glm::sin(glm::radians(colRamp)), glm::cos(glm::radians(rowRamp)), glm::sin(glm::radians(rowRamp)) * glm::cos(glm::radians(colRamp)) };
579
580 m_MeshResource.positions.attributes->push_back(position);
581 m_MeshResource.normals .attributes->push_back(glm::normalize(position));
582 m_MeshResource.colors .attributes->push_back({ 1.0f, 1.0f, 1.0f });
583 m_MeshResource.texCoords.attributes->push_back({ j / static_cast<float>(m_Columns - 1), i / static_cast<float>(m_Rows - 1) });
584
585 m_MeshResource.vertices .attributes->push_back(glm::uvec4(vtIndex));
586 }
587 }
588
589 for (uint32_t i = 0; i < m_Rows - 1; i++)
590 {
591 for (uint32_t j = 0; j < m_Columns - 1; j++)
592 {
593 const uint32_t vtIndex = i * m_Columns + j;
594
595 m_MeshResource.primitiveVertices.attributes->push_back({ vtIndex, vtIndex + 1, vtIndex + m_Columns + 1 });
596 m_MeshResource.primitiveVertices.attributes->push_back({ vtIndex + m_Columns + 1, vtIndex + m_Columns, vtIndex });
597 }
598 }
599
600 if (isCreateBuffer)
601 {
603 CreateBuffer();
604 }
605
606 return true;
607 }
#define SPICES_PROFILE_ZONE
virtual bool OnCreatePack(bool isCreateBuffer=true)
This interface is used for build specific mesh pack data.
Definition MeshPack.cpp:119
MeshResource m_MeshResource
Mesh Resources.
Definition MeshPack.h:331
void CreateBuffer()
Create Vertices buffer anf Indices buffer.
Definition MeshPack.cpp:278
static void GenerateMeshLodClusterHierarchy(MeshPack *meshPack)
Generate Mesh Lod Resources.
uint32_t m_Rows
How much rows number we use.
Definition MeshPack.h:529
uint32_t m_Columns
How much cols number we use.
Definition MeshPack.h:534
std::shared_ptr< std::vector< T > > attributes
Attribute Data Array.
Definition Attribute.h:49
TexCoords texCoords
Definition MeshPack.h:71
Positions positions
Declare value.
Definition MeshPack.h:68
PrimitiveVertices primitiveVertices
Definition MeshPack.h:74

References Spices::MeshPack::CreateBuffer(), Spices::MeshProcessor::GenerateMeshLodClusterHierarchy(), m_Columns, m_Rows, and Spices::MeshPack::OnCreatePack().