| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #include "PatchNode.h"
- #include "rsrc/Material.h"
- #include "MaterialRuntime.h"
- //==============================================================================
- // Constructor =
- //==============================================================================
- PatchNode::PatchNode(const ModelPatch& modelPatch, SceneNode* parent)
- : RenderableNode(true, parent),
- rsrc(modelPatch),
- mtlRun(new MaterialRuntime(rsrc.getMaterial()))
- {}
- //==============================================================================
- // createVao =
- //==============================================================================
- void PatchNode::createVao(const Material& mtl, const VboArray& vbos,
- Vao& vao)
- {
- vao.create();
- if(mtl.buildinVariableExits(MaterialBuildinVariable::MV_POSITION))
- {
- ASSERT(vbos[Mesh::VBO_VERT_POSITIONS] != NULL);
- vao.attachArrayBufferVbo(*vbos[Mesh::VBO_VERT_POSITIONS],
- 0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
- }
- if(mtl.buildinVariableExits(MaterialBuildinVariable::MV_NORMAL))
- {
- ASSERT(vbos[Mesh::VBO_VERT_NORMALS] != NULL);
- vao.attachArrayBufferVbo(*vbos[Mesh::VBO_VERT_NORMALS],
- 1, 3, GL_FLOAT, GL_FALSE, 0, NULL);
- }
- if(mtl.buildinVariableExits(MaterialBuildinVariable::MV_TANGENT))
- {
- ASSERT(vbos[Mesh::VBO_VERT_TANGENTS] != NULL);
- vao.attachArrayBufferVbo(*vbos[Mesh::VBO_VERT_TANGENTS],
- 2, 4, GL_FLOAT, GL_FALSE, 0, NULL);
- }
- if(mtl.buildinVariableExits(MaterialBuildinVariable::MV_TEX_COORDS))
- {
- vao.attachArrayBufferVbo(*vbos[Mesh::VBO_TEX_COORDS],
- 3, 2, GL_FLOAT, GL_FALSE, 0, NULL);
- }
- vao.attachElementArrayBufferVbo(*vbos[Mesh::VBO_VERT_INDECES]);
- }
|