Update box mesh.
36 size_t _numVertices = _resX * _resY;
40 auto _vertexIt = _vertices.begin();
41 auto _indexIt = _indices.begin();
43 std::array<QVector3D, 6> _normals = {
44 QVector3D(0.0, 1.0, 0.0),
45 QVector3D(0.0, -1.0, 0.0),
46 QVector3D(1.0, 0.0, 0.0),
47 QVector3D(-1.0, 0.0, 0.0),
48 QVector3D(0.0, 0.0, 1.0),
49 QVector3D(0.0, 0.0, -1.0)
52 for (
size_t i = 0; i < 6; ++i) {
53 auto& _normal = _normals[i];
55 for (
size_t x = 0; x < _resX; ++x) {
56 for (
size_t y = 0; y < _resY; ++y) {
58 if (((x + 1) < _resX) && ((y + 1) < _resY)) {
59 *(_indexIt++) = i * _numVertices + (x + 0) * _resY + (y + 1);
60 *(_indexIt++) = i * _numVertices + (x + 1) * _resY + (y + 1);
61 *(_indexIt++) = i * _numVertices + (x + 1) * _resY + (y + 0);
62 *(_indexIt++) = i * _numVertices + (x + 0) * _resY + (y + 0);
66 QVector2D _pos(x /
float(_resX - 1), y /
float(_resY - 1));
67 QVector2D _texCoord((i + 1.0 - _pos.x()) / 6.0, _pos.y());
68 _pos -= QVector2D(0.5, 0.5);
73 _vertexIt->setPos(QVector3D(_pos.x(), _normal.y() * 0.5, _pos.y()));
77 _vertexIt->setPos(QVector3D(-_pos.x(), _normal.y() * 0.5,
82 _vertexIt->setPos(QVector3D(_normal.x() * 0.5, -_pos.x(),
87 _vertexIt->setPos(QVector3D(_normal.x() * 0.5, _pos.x(), _pos.y()));
91 _vertexIt->setPos(QVector3D(-_pos.x(), _pos.y(),
96 _vertexIt->setPos(QVector3D(-_pos.x(), -_pos.y(),
101 _vertexIt->setTexCoord(_texCoord);
103 _vertexIt->setNormal(_normals[i]);
VertexVBO vbo_
Definition: Box.h:43
std::vector< uint32_t > index_buffer_type
Index buffer type.
Definition: VertexVBO.h:36
size_t horizontal_
Definition: Box.h:41
void primaryContextSwitch(ContextFunctor f)
Switch to primary context to create OpenGL objects like textures etc.
Definition: ContextSwitch.cpp:40
std::vector< Vertex > vertex_buffer_type
Vertex buffer type.
Definition: VertexVBO.h:33
size_t vertical_
Definition: Box.h:42
void buffer(vertex_buffer_type const &_vertices, index_buffer_type const &_indices)
Copy buffers to GPU.
Definition: VertexVBO.cpp:33