c++ - 不能在 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());
解决方案
推荐阅读
- sql - NTILE SQL 存储桶只有 4 个匹配而不是 2
- azure - 创建生成管道后生成错误 - Azure Devops
- c++ - 将类实例添加到 C++ 中的对象层次结构中的问题
- javascript - 如何使用 API Javascript 获得 google play 应用率
- python - 训练 tensorflow 时计算机死机和崩溃
- python - 删除 Django 项目中 requirements.txt 中的冗余
- python - Pandas:根据阈值标准删除列
- c++ - Visual Studio 2015 资源视图和资源编译器使用不同的方法在项目目录中查找图标文件。如何解决?
- mysql - 在 Airflow 中使用的 MySQL 遇到很多死锁
- javascript - 通过无人机拍摄的 Google Maps Api V3 在 Google Maps 上叠加图像,相机方向向下