History

More work towards skinning.

Andrzej Kapolka committed 13 years ago

Commit db30e721 parent ed0acd25 files · +134 −81Browse files

Showing the changes to interface/src/renderer/GeometryCache.cpp (1 of 5 files). Show all

Unified · Split

interface/src/renderer/GeometryCache.cpp+22−3
@@ -363,18 +363,37 @@ void NetworkGeometry::maybeReadModelWithMapping() { · 362 unmodified lines
363363 glGenBuffers(1, &networkMesh.vertexBufferID);
364364 glBindBuffer(GL_ARRAY_BUFFER, networkMesh.vertexBufferID);
365365
366+ // if we don't need to do any blending or springing, then the positions/normals can be static
366367 if (mesh.blendshapes.isEmpty() && mesh.springiness == 0.0f) {
367368 glBufferData(GL_ARRAY_BUFFER, (mesh.vertices.size() + mesh.normals.size()) * sizeof(glm::vec3) +
368− mesh.texCoords.size() * sizeof(glm::vec2), NULL, GL_STATIC_DRAW);
369+ mesh.texCoords.size() * sizeof(glm::vec2) + (mesh.clusterIndices.size() +
370+ mesh.clusterWeights.size()) * sizeof(glm::vec4), NULL, GL_STATIC_DRAW);
369371 glBufferSubData(GL_ARRAY_BUFFER, 0, mesh.vertices.size() * sizeof(glm::vec3), mesh.vertices.constData());
370372 glBufferSubData(GL_ARRAY_BUFFER, mesh.vertices.size() * sizeof(glm::vec3),
371373 mesh.normals.size() * sizeof(glm::vec3), mesh.normals.constData());
372374 glBufferSubData(GL_ARRAY_BUFFER, (mesh.vertices.size() + mesh.normals.size()) * sizeof(glm::vec3),
373375 mesh.texCoords.size() * sizeof(glm::vec2), mesh.texCoords.constData());
376+ glBufferSubData(GL_ARRAY_BUFFER, (mesh.vertices.size() + mesh.normals.size()) * sizeof(glm::vec3) +
377+ mesh.texCoords.size() * sizeof(glm::vec2), mesh.clusterIndices.size() * sizeof(glm::vec4),
378+ mesh.clusterIndices.constData());
379+ glBufferSubData(GL_ARRAY_BUFFER, (mesh.vertices.size() + mesh.normals.size()) * sizeof(glm::vec3) +
380+ mesh.texCoords.size() * sizeof(glm::vec2) + mesh.clusterIndices.size() * sizeof(glm::vec4),
381+ mesh.clusterWeights.size() * sizeof(glm::vec4), mesh.clusterWeights.constData());
382+
383+ // if there's no springiness, then the cluster indices/weights can be static
384+ } else if (mesh.springiness == 0.0f) {
385+ glBufferData(GL_ARRAY_BUFFER, mesh.texCoords.size() * sizeof(glm::vec2) + (mesh.clusterIndices.size() +
386+ mesh.clusterWeights.size()) * sizeof(glm::vec4), NULL, GL_STATIC_DRAW);
387+ glBufferSubData(GL_ARRAY_BUFFER, 0, mesh.texCoords.size() * sizeof(glm::vec2), mesh.texCoords.constData());
388+ glBufferSubData(GL_ARRAY_BUFFER, mesh.texCoords.size() * sizeof(glm::vec2),
389+ mesh.clusterIndices.size() * sizeof(glm::vec4), mesh.clusterIndices.constData());
390+ glBufferSubData(GL_ARRAY_BUFFER, mesh.texCoords.size() * sizeof(glm::vec2) +
391+ mesh.clusterIndices.size() * sizeof(glm::vec4), mesh.clusterWeights.size() * sizeof(glm::vec4),
392+ mesh.clusterWeights.constData());
374393
375394 } else {
376− glBufferData(GL_ARRAY_BUFFER, mesh.texCoords.size() * sizeof(glm::vec2),
377− mesh.texCoords.constData(), GL_STATIC_DRAW);
395+ glBufferData(GL_ARRAY_BUFFER, mesh.texCoords.size() * sizeof(glm::vec2), NULL, GL_STATIC_DRAW);
396+ glBufferSubData(GL_ARRAY_BUFFER, 0, mesh.texCoords.size() * sizeof(glm::vec2), mesh.texCoords.constData());
378397 }
379398
380399 glBindBuffer(GL_ARRAY_BUFFER, 0);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t