首页 > 解决方案 > 不能在 QOpenGLBuffer::allocate 上使用 std::vector 代替 std::array

问题描述

我正在使用带有 Qt 的 OpenGl,并且正在使用 std::array 分配缓冲区,我想用 std::vector 替换它,它应该以几乎相同的方式工作,但它根本不起作用,只是黑屏。

Vertex 只是一个有六个浮点数 (x,y,z, r,g,b) 和几个方法的类

顶点声明

//works
std::array<Vertex, 12> vertexes = {
    VERTEX_0, VERTEX_2, VERTEX_TOP,
    VERTEX_2, VERTEX_1, VERTEX_TOP,
    VERTEX_1, VERTEX_0, VERTEX_TOP,
    VERTEX_0, VERTEX_1, VERTEX_2,
};

//doesn't work
std::vector<Vertex> vertexes = {
    VERTEX_0, VERTEX_2, VERTEX_TOP,
    VERTEX_2, VERTEX_1, VERTEX_TOP,
    VERTEX_1, VERTEX_0, VERTEX_TOP,
    VERTEX_0, VERTEX_1, VERTEX_2,
};

缓冲区分配

m_vertex.allocate(vertexes.data(), sizeof(Vertex) * vertexes.size());

标签: c++qtopengl

解决方案


推荐阅读