1#ifndef TATOOINE_LINE_RENDERER_H
2#define TATOOINE_LINE_RENDERER_H
9template <
typename Real,
size_t N,
template <
typename>
typename Interpolator>
10auto upload(
const parameterized_line<Real, N, Interpolator>& l) {
12 typename gpu_t::vbo_data_vec vbo_data;
13 vbo_data.reserve(l.vertices().size());
14 typename gpu_t::ibo_data_vec ibo_data;
15 ibo_data.reserve(l.vertices().size() * 2 - 2);
17 for (
size_t i = 0; i < l.vertices().
size(); ++i) {
18 const auto& pos = l.vertex_at(i);
19 const auto tan = l.tangent_at(i);
20 const auto t = l.parameterization_at(i);
22 for (
size_t j = 0; j < N; ++j) {
23 ypos(j) =
static_cast<float>(pos(j));
24 ytan(j) =
static_cast<float>(tan(j));
27 vbo_data.push_back({ypos, ytan,
static_cast<float>(t)});
29 for (
size_t i = 0; i < l.vertices().size() - 1; ++i) {
30 ibo_data.push_back(i);
31 ibo_data.push_back(i + 1);
33 return gpu_t{vbo_data, ibo_data};
36template <
typename Real,
size_t N,
template <
typename>
typename Interpolator>
37auto upload(
const std::vector<parameterized_line<Real, N, Interpolator>>& ls) {
39 std::vector<gpu_t> uploads;
40 uploads.reserve(ls.size());
41 for (
const auto& l : ls) { uploads.push_back(
upload(l)); }
Definition: indexeddata.h:13
Definition: line_renderer.h:7
auto upload(const parameterized_line< Real, N, Interpolator > &l)
Definition: line_renderer.h:10
auto size(vec< ValueType, N > const &v)
Definition: vec.h:148