Browse Source

Added Cube primitive.

vectorfields
Vladimír Vondruš 15 years ago
parent
commit
6da26dc4bc
  1. 1
      src/Primitives/CMakeLists.txt
  2. 56
      src/Primitives/Cube.cpp
  3. 42
      src/Primitives/Cube.h

1
src/Primitives/CMakeLists.txt

@ -1,4 +1,5 @@
set(MagnumPrimitives_SRCS
Cube.cpp
)
add_library(MagnumPrimitives STATIC ${MagnumPrimitives_SRCS})

56
src/Primitives/Cube.cpp

@ -0,0 +1,56 @@
/*
Copyright © 2010, 2011 Vladimír Vondruš <mosra@centrum.cz>
This file is part of Magnum.
Magnum is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License version 3
only, as published by the Free Software Foundation.
Magnum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License version 3 for more details.
*/
#include "Cube.h"
#include "Buffer.h"
#include "IndexedMesh.h"
namespace Magnum { namespace Primitives {
const Vector4 Cube::_vertices[] = {
Vector4(-1.0f, -1.0f, -1.0f),
Vector4( 1.0f, -1.0f, -1.0f),
Vector4(-1.0f, 1.0f, -1.0f),
Vector4( 1.0f, 1.0f, -1.0f),
Vector4(-1.0f, -1.0f, 1.0f),
Vector4( 1.0f, -1.0f, 1.0f),
Vector4(-1.0f, 1.0f, 1.0f),
Vector4( 1.0f, 1.0f, 1.0f)
};
const GLubyte Cube::_indices[] = {
0, 1, 2,
2, 1, 3,
1, 5, 3,
3, 5, 7,
5, 4, 7,
7, 4, 6,
4, 0, 6,
6, 0, 2,
2, 3, 7,
2, 7, 6,
4, 5, 1,
4, 1, 0
};
void Cube::build(IndexedMesh* mesh, Buffer* vertexBuffer) {
prepareMesh(mesh);
vertexBuffer->setData(sizeof(_vertices), _vertices, Buffer::DrawStatic);
mesh->indexBuffer()->setData(sizeof(_indices), _indices, Buffer::DrawStatic);
}
}}

42
src/Primitives/Cube.h

@ -0,0 +1,42 @@
#ifndef Magnum_Primitives_Cube_h
#define Magnum_Primitives_Cube_h
/*
Copyright © 2010, 2011 Vladimír Vondruš <mosra@centrum.cz>
This file is part of Magnum.
Magnum is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License version 3
only, as published by the Free Software Foundation.
Magnum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License version 3 for more details.
*/
/** @file
* @brief Class Magnum::Primitives::Cube
*/
#include "AbstractPrimitive.h"
namespace Magnum { namespace Primitives {
/** @brief Cube primitive */
class Cube: public AbstractPrimitive<GLubyte> {
public:
inline Mesh::Primitive primitive() const { return Mesh::Triangles; }
inline size_t vertexCount() const { return 8; }
inline size_t indexCount() const { return 36; }
void build(IndexedMesh* mesh, Buffer* vertexBuffer);
private:
static const Vector4 _vertices[];
static const IndexType _indices[];
};
}}
#endif
Loading…
Cancel
Save