Tatooine
line_renderer.h
Go to the documentation of this file.
1#ifndef TATOOINE_LINE_RENDERER_H
2#define TATOOINE_LINE_RENDERER_H
3//==============================================================================
4#include <tatooine/line.h>
6//==============================================================================
7namespace tatooine::gpu {
8//==============================================================================
9template <typename Real, size_t N, template <typename> typename Interpolator>
10auto upload(const parameterized_line<Real, N, Interpolator>& l) {
11 using gpu_t = gl::indexeddata<vec<float, N>, vec<float, N>, float>;
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);
16
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);
21 vec<float, N> ypos, ytan;
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));
25 }
26 //ypos(0) *= -1;
27 vbo_data.push_back({ypos, ytan, static_cast<float>(t)});
28 }
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);
32 }
33 return gpu_t{vbo_data, ibo_data};
34}
35//------------------------------------------------------------------------------
36template <typename Real, size_t N, template <typename> typename Interpolator>
37auto upload(const std::vector<parameterized_line<Real, N, Interpolator>>& ls) {
38 using gpu_t = gl::indexeddata<vec<float, N>, vec<float, N>, float>;
39 std::vector<gpu_t> uploads;
40 uploads.reserve(ls.size());
41 for (const auto& l : ls) { uploads.push_back(upload(l)); }
42 return uploads;
43}
44//==============================================================================
45} // namespace tatooine::gpu
46//==============================================================================
47#endif
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
Definition: vec.h:12