Set up simp_vertex buffer object
| 1770 | |
| 1771 | // Set up simp_vertex buffer object |
| 1772 | void Model::createVBO() { |
| 1773 | CHECK_GL_ERROR(); |
| 1774 | |
| 1775 | VBO_vertices.Fill(kVBOFloat | kVBOStatic, vertices.size() * sizeof(float), &vertices[0]); |
| 1776 | if (!normals.empty()) { |
| 1777 | VBO_normals.Fill(kVBOFloat | kVBOStatic, vertices.size() * sizeof(float), &normals[0]); |
| 1778 | } |
| 1779 | CHECK_GL_ERROR(); |
| 1780 | if (!tangents.empty()) { |
| 1781 | VBO_tangents.Fill(kVBOFloat | kVBOStatic, vertices.size() * sizeof(float), &tangents[0]); |
| 1782 | } |
| 1783 | CHECK_GL_ERROR(); |
| 1784 | if (!bitangents.empty()) { |
| 1785 | VBO_bitangents.Fill(kVBOFloat | kVBOStatic, vertices.size() * sizeof(float), &bitangents[0]); |
| 1786 | } |
| 1787 | |
| 1788 | CHECK_GL_ERROR(); |
| 1789 | VBO_tex_coords.Fill(kVBOFloat | kVBOStatic, vertices.size() / 3 * 2 * sizeof(float), &tex_coords[0]); |
| 1790 | |
| 1791 | CHECK_GL_ERROR(); |
| 1792 | if (!tex_coords2.empty()) { |
| 1793 | VBO_tex_coords2.Fill(kVBOFloat | kVBOStatic, vertices.size() / 3 * 2 * sizeof(float), &tex_coords2[0]); |
| 1794 | } |
| 1795 | |
| 1796 | if (!aux.empty()) { |
| 1797 | VBO_aux.Fill(kVBOFloat | kVBOStatic, vertices.size() * sizeof(float), &aux[0]); |
| 1798 | } |
| 1799 | |
| 1800 | CHECK_GL_ERROR(); |
| 1801 | VBO_faces.Fill(kVBOElement | kVBOStatic, faces.size() * sizeof(GLuint), &faces[0]); |
| 1802 | |
| 1803 | CHECK_GL_ERROR(); |
| 1804 | Graphics *graphics = Graphics::Instance(); |
| 1805 | graphics->BindArrayVBO(0); |
| 1806 | graphics->BindElementVBO(0); |
| 1807 | vbo_loaded = true; |
| 1808 | |
| 1809 | CHECK_GL_ERROR(); |
| 1810 | } |
| 1811 | |
| 1812 | struct ChildHit { |
| 1813 | float time; |
no test coverage detected