首页 > 解决方案 > 以顶点为向量的 VBO

问题描述

尝试从类似于 CUDA float4(具有 x、y、z、w 的对象)的std::vector<float4>位置传递 VBO 顶点和颜色数据。float4

int createVertexArrayObject(std::vector<float4> vertex_buffer_data, 
                        std::vector<unsigned int> index_buffer_data, 
                        std::vector<float4> color_buffer_data){

float* vertex_data = reinterpret_cast<float*>(&vertex_buffer_data[0]);

unsigned int vertexArrayID;
glGenVertexArrays(1, &vertexArrayID);
glBindVertexArray(vertexArrayID);

unsigned int vertexBufferID;
glGenBuffers(1, &vertexBufferID);
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferID);

glBufferData(
    GL_ARRAY_BUFFER,
    vertex_buffer_data.size()*sizeof(float4),
    vertex_data,
    GL_STATIC_DRAW
    );
   (...)
  }

这就是我正在处理的将数据传递给 VBO 的工作。但是,没有任何渲染。我是否正确计算了大小,是否提供了对结构中第一个元素的正确引用?

标签: opengl

解决方案


推荐阅读