Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualKaiserJohan

Posted 30 September 2012 - 02:54 PM

Hello,

I have a method like this for a first-try to draw triangles in OpenGL 3.3 (Vec3 is from glm library):

void RenderOpenGL::DrawTriangle(const Vec3& pointA, const Vec3& pointB, const Vec3& pointC)
{
  glBindBuffer(GL_ARRAY_BUFFER, mVertexBuffer);
  glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3), glm::value_ptr(pointA), GL_STATIC_DRAW);
  glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3), glm::value_ptr(pointB), GL_STATIC_DRAW);
  glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3), glm::value_ptr(pointC), GL_STATIC_DRAW);

  PrimitiveInfo primInfo;
  primInfo.Mode = GL_TRIANGLES;
  primInfo.Count = 3;
  mPrimitiveInfo.push_back(primInfo);
}

I would then go through my Vector<PrimitiveInfo> mPrimitiveInfo and draw as the elements indicated.

From what I read on http://www.opengl.or...lBufferData.xml each consequent call to glBufferData will overwrite the old.
So how would you actually buffer this? Say I'm calling this method to draw three triangles, how would I actually buffer it without loosing the old data?

EDIT: and as a follow-up, how should you actually manage the VBOs? Right now I have a single buffer object to which I write data to but as you progress how would you distribute them?

#2KaiserJohan

Posted 30 September 2012 - 02:54 PM

Hello,

I have a method like this for a first-try to draw triangles in OpenGL 3.3 (Vec3 is from glm library):

void RenderOpenGL::DrawTriangle(const Vec3& pointA, const Vec3& pointB, const Vec3& pointC)
{
  glBindBuffer(GL_ARRAY_BUFFER, mVertexBuffer);
  glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3), glm::value_ptr(pointA), GL_STATIC_DRAW);
  glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3), glm::value_ptr(pointB), GL_STATIC_DRAW);
  glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3), glm::value_ptr(pointC), GL_STATIC_DRAW);

  PrimitiveInfo primInfo;
  primInfo.Mode = GL_TRIANGLES;
  primInfo.Count = 3;
  mPrimitiveInfo.push_back(primInfo);
}

I would then go through my Vector<PrimitiveInfo> mPrimitiveInfo and draw as the elements indicated.

From what I read on http://www.opengl.or...lBufferData.xml each consequent call to glBufferData will overwrite the old.
So how would you actually buffer this? Say I'm calling this method to draw three triangles, how would I actually buffer it without loosing the old data?

EDIT: and as a follow-up, how should you actually manage the VBOs? Right now I have a single buffer to which I write data to but as you progress how would you distribute them?

#1KaiserJohan

Posted 30 September 2012 - 02:28 PM

Hello,

I have a method like this for a first-try to draw triangles in OpenGL 3.3 (Vec3 is from glm library):

void RenderOpenGL::DrawTriangle(const Vec3& pointA, const Vec3& pointB, const Vec3& pointC)
{
  glBindBuffer(GL_ARRAY_BUFFER, mVertexBuffer);
  glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3), glm::value_ptr(pointA), GL_STATIC_DRAW);
  glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3), glm::value_ptr(pointB), GL_STATIC_DRAW);
  glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3), glm::value_ptr(pointC), GL_STATIC_DRAW);

  PrimitiveInfo primInfo;
  primInfo.Mode = GL_TRIANGLES;
  primInfo.Count = 3;
  mPrimitiveInfo.push_back(primInfo);
}

I would then go through my Vector<PrimitiveInfo> mPrimitiveInfo and draw as the elements indicated.

From what I read on http://www.opengl.org/sdk/docs/man/xhtml/glBufferData.xml each consequent call to glBufferData will overwrite the old.
So how would you actually buffer this? Say I'm calling this method to draw three triangles, how would I actually buffer it without loosing the old data?

PARTNERS