adds a ground plane to the scene */
| 89 | |
| 90 | /* adds a ground plane to the scene */ |
| 91 | unsigned int addTerrain(RTCScene scene_i) |
| 92 | { |
| 93 | /* create a triangulated plane with 2 triangles and 4 vertices */ |
| 94 | RTCGeometry mesh = rtcNewGeometry (g_device, RTC_GEOMETRY_TYPE_TRIANGLE); |
| 95 | |
| 96 | /* set vertices */ |
| 97 | RTCBuffer vertex_buffer = rtcNewSharedBufferHostDevice(g_device, (void *)terrain_vertices, 3*terrain_num_vertices*sizeof(float)); |
| 98 | rtcSetGeometryBuffer(mesh, RTC_BUFFER_TYPE_VERTEX, 0, RTC_FORMAT_FLOAT3, vertex_buffer, 0, 3*sizeof(float), terrain_num_vertices); |
| 99 | rtcCommitBuffer(vertex_buffer); |
| 100 | rtcReleaseBuffer(vertex_buffer); |
| 101 | |
| 102 | /* set triangles */ |
| 103 | RTCBuffer index_buffer = rtcNewSharedBufferHostDevice(g_device, (void *)terrain_indices, 3*terrain_num_triangles*sizeof(unsigned int)); |
| 104 | rtcSetGeometryBuffer(mesh, RTC_BUFFER_TYPE_INDEX, 0, RTC_FORMAT_UINT3, index_buffer, 0, 3*sizeof(unsigned int), terrain_num_triangles); |
| 105 | rtcCommitBuffer(index_buffer); |
| 106 | rtcReleaseBuffer(index_buffer); |
| 107 | data.terrain_triangles = (Triangle*)rtcGetBufferDataDevice(index_buffer); |
| 108 | |
| 109 | g_memory_consumed += terrain_num_vertices * 3 * sizeof(float); |
| 110 | g_memory_consumed += terrain_num_triangles * 3 * sizeof(unsigned int); |
| 111 | |
| 112 | rtcCommitGeometry(mesh); |
| 113 | unsigned int geomID = rtcAttachGeometry(scene_i,mesh); |
| 114 | rtcReleaseGeometry(mesh); |
| 115 | return geomID; |
| 116 | } |
| 117 | |
| 118 | bool monitorMemoryFunction(void* ptr, ssize_t bytes, bool post) |
| 119 | { |
no test coverage detected