feat: triangle fan triangulation

This commit is contained in:
parker
2025-07-02 21:37:46 +01:00
parent d614c1998c
commit 1c708c62dc
2 changed files with 17 additions and 17 deletions

View File

@@ -15,15 +15,21 @@ void GLMesh::init()
initBuffers(); initBuffers();
vertexPosData = { std::vector<int> foo = {0,1,2,3,4};
-0.5f, -0.5f, 0.0f, for(int i=1;i+1<foo.size();++i)
0.5f, -0.5f, 0.0f, {
0.0f, 0.5f, 0.0f, indexData.push_back(foo.at(0));
0.5f, 0.5f, 0.0f indexData.push_back(foo.at(i));
}; indexData.push_back(foo.at(i+1));
}
// indexData =
// {
// 0, 1, 2, 1, 2, 3
// };
// store data in the buffer // store data in the buffer
glBufferData(GL_ARRAY_BUFFER, vertexPosData.size()*sizeof(GLfloat), vertexPosData.data(), GL_STATIC_DRAW); glBufferData(GL_ARRAY_BUFFER, vertexPosData.size()*sizeof(GLfloat), vertexPosData.data(), GL_STATIC_DRAW);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indexData.size()*sizeof(GLint), indexData.data(), GL_STATIC_DRAW);
// unbind vertex array // unbind vertex array
@@ -33,12 +39,6 @@ void GLMesh::init()
void GLMesh::initBuffers() void GLMesh::initBuffers()
{ {
indexData =
{
0, 1, 2, 1, 2, 3
};
// create buffer of vertices // create buffer of vertices
glGenBuffers(1, &vertexBuffer); glGenBuffers(1, &vertexBuffer);
// set purpose // set purpose
@@ -51,7 +51,6 @@ void GLMesh::initBuffers()
glGenBuffers(1, &indexBuffer); glGenBuffers(1, &indexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indexData.size()*sizeof(GLint), indexData.data(), GL_STATIC_DRAW);
} }

View File

@@ -149,10 +149,11 @@ std::unique_ptr<GLMesh> ViewportGLWidget::meshFromGeo(std::unique_ptr<enzo::geo:
std::shared_ptr<ga::Attribute> PAttr = geometry->getAttribByName(ga::AttrOwner::POINT, "P"); std::shared_ptr<ga::Attribute> PAttr = geometry->getAttribByName(ga::AttrOwner::POINT, "P");
ga::AttributeHandleVector3 PAttrHandle = ga::AttributeHandleVector3(PAttr); ga::AttributeHandleVector3 PAttrHandle = ga::AttributeHandleVector3(PAttr);
PAttrHandle.addValue(bt::Vector3(-0.5f, -0.5f, 0.0f)); PAttrHandle.addValue(bt::Vector3(1.0f, -1.0f, 0.0f));
PAttrHandle.addValue(bt::Vector3(0.5f, -0.5f, 0.0f)); PAttrHandle.addValue(bt::Vector3(-1.0f, -1.0f, 0.0f));
PAttrHandle.addValue(bt::Vector3(0.0f, 0.5f, 0.0f)); PAttrHandle.addValue(bt::Vector3(-1.0f, 1.0f, 0.0f));
PAttrHandle.addValue(bt::Vector3(0.5f, 0.5f, 0.0f)); PAttrHandle.addValue(bt::Vector3(0.0f, 2.0f, 0.0f));
PAttrHandle.addValue(bt::Vector3(1.0f, 1.0f, 0.0f));
mesh->setPosBuffer(PAttrHandle.getData()); mesh->setPosBuffer(PAttrHandle.getData());
// mesh->setPosBuffer(std::vector<bt::Vector3>{ // mesh->setPosBuffer(std::vector<bt::Vector3>{