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
363 glGenBuffers(1, &networkMesh.vertexBufferID);363 glGenBuffers(1, &networkMesh.vertexBufferID);
364 glBindBuffer(GL_ARRAY_BUFFER, networkMesh.vertexBufferID);364 glBindBuffer(GL_ARRAY_BUFFER, networkMesh.vertexBufferID);
365 365
366 // if we don't need to do any blending or springing, then the positions/normals can be static
366 if (mesh.blendshapes.isEmpty() && mesh.springiness == 0.0f) {367 if (mesh.blendshapes.isEmpty() && mesh.springiness == 0.0f) {
367 glBufferData(GL_ARRAY_BUFFER, (mesh.vertices.size() + mesh.normals.size()) * sizeof(glm::vec3) +368 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);
369 glBufferSubData(GL_ARRAY_BUFFER, 0, mesh.vertices.size() * sizeof(glm::vec3), mesh.vertices.constData());371 glBufferSubData(GL_ARRAY_BUFFER, 0, mesh.vertices.size() * sizeof(glm::vec3), mesh.vertices.constData());
370 glBufferSubData(GL_ARRAY_BUFFER, mesh.vertices.size() * sizeof(glm::vec3),372 glBufferSubData(GL_ARRAY_BUFFER, mesh.vertices.size() * sizeof(glm::vec3),
371 mesh.normals.size() * sizeof(glm::vec3), mesh.normals.constData());373 mesh.normals.size() * sizeof(glm::vec3), mesh.normals.constData());
372 glBufferSubData(GL_ARRAY_BUFFER, (mesh.vertices.size() + mesh.normals.size()) * sizeof(glm::vec3),374 glBufferSubData(GL_ARRAY_BUFFER, (mesh.vertices.size() + mesh.normals.size()) * sizeof(glm::vec3),
373 mesh.texCoords.size() * sizeof(glm::vec2), mesh.texCoords.constData());375 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());
374 393
375 } else {394 } else {
376 glBufferData(GL_ARRAY_BUFFER, mesh.texCoords.size() * sizeof(glm::vec2),395 glBufferData(GL_ARRAY_BUFFER, mesh.texCoords.size() * sizeof(glm::vec2), NULL, GL_STATIC_DRAW);
377 mesh.texCoords.constData(), GL_STATIC_DRAW);396 glBufferSubData(GL_ARRAY_BUFFER, 0, mesh.texCoords.size() * sizeof(glm::vec2), mesh.texCoords.constData());
378 }397 }
379 398
380 glBindBuffer(GL_ARRAY_BUFFER, 0);399 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