Advertisement
Gabriele91

Untitled

Dec 31st, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1.                 terrain_vertex* vecs = (terrain_vertex*)render::map_VBO(m_vbuffer, 0, m_vb_size * sizeof(terrain_vertex), MAP_WRITE);
  2.                 //uv range in terrain
  3.                 vec2  uv_area = thiz_node.m_info.m_end - thiz_node.m_info.m_start;
  4.                 vec2  uv_step = uv_area / vec2(m_detail_vertexs);
  5.                 //mapping
  6.                 #pragma omp parallel for num_threads(4)
  7.                 for (int y = 0; y < m_detail_vertexs.y; ++y)
  8.                 for (int x = 0; x < m_detail_vertexs.x; ++x)
  9.                 {
  10.                     //vertex id
  11.                     int vid = y * m_detail_vertexs.x + x;
  12.                     assert(vid < m_vb_size);
  13.                     //current uv
  14.                     vec2 uv_coord(thiz_node.m_info.m_start + uv_step * vec2(x,y));
  15.                     //get height
  16.                     float height = get_height(uv_coord.x, uv_coord.y);
  17.                     //pos
  18.                     vec3 pos
  19.                     {
  20.                           uv_coord.x - 0.5
  21.                         , height
  22.                         , uv_coord.y - 0.5
  23.                     };
  24.                     //add new vertex
  25.                     vecs[vid] = terrain_vertex
  26.                     (
  27.                         pos,
  28.                         vec3(0, 1, 0),
  29.                         uv_coord
  30.                     );
  31.                 }
  32.                 render::unmap_VBO(m_vbuffer);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement