| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #include "PatchNode.h"
- #include "Material.h"
- #include "MaterialRuntime.h"
- //======================================================================================================================
- // Constructor =
- //======================================================================================================================
- PatchNode::PatchNode(const ModelPatch& modelPatch, SceneNode* parent):
- RenderableNode(parent),
- rsrc(modelPatch)
- {
- cpMtlRun.reset(new MaterialRuntime(rsrc.getCpMtl()));
- dpMtlRun.reset(new MaterialRuntime(rsrc.getDpMtl()));
- }
- //======================================================================================================================
- // createVao =
- //======================================================================================================================
- void PatchNode::createVao(const Material& mtl, const boost::array<const Vbo*, Mesh::VBOS_NUM>& vbos, Vao& vao)
- {
- vao.create();
- if(mtl.getStdAttribVar(Material::SAV_POSITION) != NULL)
- {
- vao.attachArrayBufferVbo(*vbos[Mesh::VBO_VERT_POSITIONS], *mtl.getStdAttribVar(Material::SAV_POSITION),
- 3, GL_FLOAT, GL_FALSE, 0, NULL);
- }
- if(mtl.getStdAttribVar(Material::SAV_NORMAL) != NULL)
- {
- vao.attachArrayBufferVbo(*vbos[Mesh::VBO_VERT_NORMALS], *mtl.getStdAttribVar(Material::SAV_NORMAL),
- 3, GL_FLOAT, GL_FALSE, 0, NULL);
- }
- if(mtl.getStdAttribVar(Material::SAV_TANGENT) != NULL)
- {
- vao.attachArrayBufferVbo(*vbos[Mesh::VBO_VERT_TANGENTS], *mtl.getStdAttribVar(Material::SAV_TANGENT),
- 4, GL_FLOAT, GL_FALSE, 0, NULL);
- }
- if(mtl.getStdAttribVar(Material::SAV_TEX_COORDS) != NULL)
- {
- vao.attachArrayBufferVbo(*vbos[Mesh::VBO_TEX_COORDS], *mtl.getStdAttribVar(Material::SAV_TEX_COORDS),
- 2, GL_FLOAT, GL_FALSE, 0, NULL);
- }
- vao.attachElementArrayBufferVbo(*vbos[Mesh::VBO_VERT_INDECES]);
- }
|