void BitVector::indexForSelect() { delete this->select_index; usint index_samples = (this->number_of_blocks + BitVector::INDEX_RATE - 1) / BitVector::INDEX_RATE; this->select_rate = (this->items + index_samples - 1) / index_samples; index_samples = (this->items + this->select_rate - 1) / this->select_rate + 1; WriteBuffer index_buffer(index_samples, length(this->number_of_blocks - 1)); // current is index, pointer is sample number. usint current = 0, pointer = 0; this->samples->goToItem(2); while(this->samples->hasNextItem()) { usint limit = this->samples->readItem(); // Next sampled index. this->samples->skipItem(); while(current < limit) { index_buffer.writeItem(pointer); current += this->select_rate; } pointer++; } index_buffer.writeItem(this->number_of_blocks - 1); this->select_index = index_buffer.getReadBuffer(); }
GLFWwindow *setup_program(t_properties *properties) { static const float verts[] = {-1, 1, -1, -1, 1, -1, 1, 1}; static const GLuint inds[] = {0, 1, 3, 1, 2, 3}; GLFWwindow *window; properties->width = 1000; properties->height = 1000; window = make_glfw(properties->width, properties->height); glClearColor(0, 0, 0, 1); properties->model = vao(); properties->verts = data_buffer((GLvoid *)verts, sizeof(verts)); properties->indices = index_buffer((GLvoid *)inds, sizeof(inds)); vao_add_indices(properties->model, properties->indices); vao_add_vdata(properties->model, properties->verts, 2, GL_FALSE); ft_putnbr(glGetError()); ft_putendl(" -0"); properties->shaders[0] = load_vertex(); properties->shaders[1] = load_fragment(properties->map); properties->program = shader_program(properties->shaders, 2); ft_putnbr(glGetError()); ft_putendl(" -1"); glUseProgram(properties->program); glBindVertexArray(properties->model); glEnableVertexAttribArray(0); init_uniforms(properties->program); return (window); }
void BitVector::indexForRank() { delete this->rank_index; usint value_samples = (this->number_of_blocks + BitVector::INDEX_RATE - 1) / BitVector::INDEX_RATE; this->rank_rate = (this->size + value_samples - 1) / value_samples; value_samples = (this->size + this->rank_rate - 1) / this->rank_rate + 1; WriteBuffer index_buffer(value_samples, length(this->number_of_blocks - 1)); // current is value, pointer is sample number. usint current = 0, pointer = 0; this->samples->goToItem(2); while(this->samples->hasNextItem()) { this->samples->skipItem(); usint limit = this->samples->readItem(); // Next sampled value. while(current < limit) { index_buffer.writeItem(pointer); current += this->rank_rate; } pointer++; } index_buffer.writeItem(this->number_of_blocks - 1); this->rank_index = index_buffer.getReadBuffer(); }
IndexBufferSet() : curr_buffer_size_(0) { IndexBuffer index_buffer("default"); ib_set_.insert(index_buffer); }