예제 #1
0
파일: ShadowMap.cpp 프로젝트: gatgui/ggfx
void MESHsetup() {
#ifdef _DEBUG
  std::cout << "Setup meshes" << std::endl;
#endif
  
  VertexFormat *fmt;
  {
    VertexFormat tmp;
    tmp.addAttribute(VertexAttribute(VAS_POSITION, VAT_FLOAT, 3));
    tmp.addAttribute(VertexAttribute(VAS_NORMAL, VAT_FLOAT, 3));
    tmp.addAttribute(VertexAttribute(VAS_TEXCOORD, VAT_FLOAT, 2));
    cout << tmp.toString() << endl;
    cout << "Size in bytes: " << (unsigned long)(tmp.getBytesSize()) << endl;
    fmt = VertexFormat::Register(tmp);
  }
  //BufferObject::Usage usage =
    //BufferObject::Usage(BufferObject::BOU_STATIC|BufferObject::BOU_DRAW);
  BufferObject *vbo = NULL;
  CubeMesh = new SubMesh();
  //if (CubeMesh->createIndexed(usage, fmt, 24, 36)) { //nvert, nindex
  if (CubeMesh->createIndexed(SubMesh::PT_TRI, fmt, 24, SubMesh::IT_8, 36)) { //nvert, nindex
    vbo = CubeMesh->getVertexBuffer();
    vbo->bind();
    //vbo->upload(0, sizeof(CubeVertexData), CubeVertexData);
    vbo->upload(sizeof(CubeVertexData), CubeVertexData, BufferObject::BOU_STATIC);
    vbo = CubeMesh->getIndexBuffer();
    vbo->bind();
    //vbo->upload(0, sizeof(CubeFaceData), CubeFaceData);
    vbo->upload(sizeof(CubeFaceData), CubeFaceData, BufferObject::BOU_STATIC);
  }
  PlaneMesh = new SubMesh();
  //if (PlaneMesh->createIndexed(usage, fmt, 4, 6)) { // nvert, nindex
  if (PlaneMesh->createIndexed(SubMesh::PT_TRI, fmt, 4, SubMesh::IT_8, 6)) { // nvert, nindex
    vbo = PlaneMesh->getVertexBuffer();
    vbo->bind();
    //vbo->upload(0, sizeof(PlaneVertexData), PlaneVertexData);
    vbo->upload(sizeof(PlaneVertexData), PlaneVertexData, BufferObject::BOU_STATIC);
    vbo = PlaneMesh->getIndexBuffer();
    vbo->bind();
    //vbo->upload(0, sizeof(PlaneFaceData), PlaneFaceData);
    vbo->upload(sizeof(PlaneFaceData), PlaneFaceData, BufferObject::BOU_STATIC);
  }
  /*
  std::string fmtStr = "P-3-N-3-T0-2";
  VertexFormat *fmt = VertexFormat::Get(fmtStr);
  BufferObject::Usage usage =
    BufferObject::Usage(BufferObject::BOU_STATIC|BufferObject::BOU_DRAW);
  BufferObject *vbo = NULL;
  CubeMesh = new SubMesh();
  if (CubeMesh->createIndexed(usage, fmt, 24, 36)) { //nvert, nindex
    vbo = CubeMesh->vertexBuffer();
    vbo->bind();
    vbo->upload(0, sizeof(CubeVertexData), CubeVertexData);
    vbo = CubeMesh->indexBuffer();
    vbo->bind();
    vbo->upload(0, sizeof(CubeFaceData), CubeFaceData);
  }
  PlaneMesh = new SubMesh();
  if (PlaneMesh->createIndexed(usage, fmt, 4, 6)) { // nvert, nindex
    vbo = PlaneMesh->vertexBuffer();
    vbo->bind();
    vbo->upload(0, sizeof(PlaneVertexData), PlaneVertexData);
    vbo = PlaneMesh->indexBuffer();
    vbo->bind();
    vbo->upload(0, sizeof(PlaneFaceData), PlaneFaceData);
  }
  */
}