Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- terrain_vertex* vecs = (terrain_vertex*)render::map_VBO(m_vbuffer, 0, m_vb_size * sizeof(terrain_vertex), MAP_WRITE);
- //uv range in terrain
- vec2 uv_area = thiz_node.m_info.m_end - thiz_node.m_info.m_start;
- vec2 uv_step = uv_area / vec2(m_detail_vertexs);
- //mapping
- #pragma omp parallel for num_threads(4)
- for (int y = 0; y < m_detail_vertexs.y; ++y)
- for (int x = 0; x < m_detail_vertexs.x; ++x)
- {
- //vertex id
- int vid = y * m_detail_vertexs.x + x;
- assert(vid < m_vb_size);
- //current uv
- vec2 uv_coord(thiz_node.m_info.m_start + uv_step * vec2(x,y));
- //get height
- float height = get_height(uv_coord.x, uv_coord.y);
- //pos
- vec3 pos
- {
- uv_coord.x - 0.5
- , height
- , uv_coord.y - 0.5
- };
- //add new vertex
- vecs[vid] = terrain_vertex
- (
- pos,
- vec3(0, 1, 0),
- uv_coord
- );
- }
- render::unmap_VBO(m_vbuffer);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement