@@ -54,6 +54,8 @@ OpenGLVertexBuffer::OpenGLVertexBuffer(Mesh *mesh) : VertexBuffer() {
5454 colorBufferID = -1 ;
5555 tangentBufferID = -1 ;
5656 indexBufferID = -1 ;
57+ boneWeightBufferID = -1 ;
58+ boneIndexBufferID = -1 ;
5759
5860
5961 meshType = mesh->getMeshType ();
@@ -85,7 +87,21 @@ OpenGLVertexBuffer::OpenGLVertexBuffer(Mesh *mesh) : VertexBuffer() {
8587 glBufferDataARB (GL_ARRAY_BUFFER_ARB, mesh->vertexTangentArray .getDataSize () * sizeof (PolyRendererVertexType), mesh->vertexTangentArray .getArrayData (), GL_STATIC_DRAW_ARB);
8688 }
8789
88- if (mesh->vertexTangentArray .getDataSize () == vertexCount * 4 ) {
90+ if (mesh->vertexBoneWeightArray .getDataSize () == vertexCount * 4 ) {
91+ glGenBuffersARB (1 , &boneWeightBufferID);
92+ glBindBufferARB (GL_ARRAY_BUFFER_ARB, boneWeightBufferID);
93+
94+ glBufferDataARB (GL_ARRAY_BUFFER_ARB, mesh->vertexBoneWeightArray .getDataSize () * sizeof (PolyRendererVertexType), mesh->vertexBoneWeightArray .getArrayData (), GL_STATIC_DRAW_ARB);
95+ }
96+
97+ if (mesh->vertexBoneIndexArray .getDataSize () == vertexCount * 4 ) {
98+ glGenBuffersARB (1 , &boneIndexBufferID);
99+ glBindBufferARB (GL_ARRAY_BUFFER_ARB, boneIndexBufferID);
100+
101+ glBufferDataARB (GL_ARRAY_BUFFER_ARB, mesh->vertexBoneIndexArray .getDataSize () * sizeof (PolyRendererVertexType), mesh->vertexBoneIndexArray .getArrayData (), GL_STATIC_DRAW_ARB);
102+ }
103+
104+ if (mesh->vertexColorArray .getDataSize () == vertexCount * 4 ) {
89105 glGenBuffersARB (1 , &colorBufferID);
90106 glBindBufferARB (GL_ARRAY_BUFFER_ARB, colorBufferID);
91107
@@ -98,6 +114,7 @@ OpenGLVertexBuffer::OpenGLVertexBuffer(Mesh *mesh) : VertexBuffer() {
98114 glBufferDataARB (GL_ELEMENT_ARRAY_BUFFER_ARB, mesh->indexArray .getDataSize () * sizeof (PolyRendererIndexType), mesh->indexArray .getArrayData (), GL_STATIC_DRAW_ARB);
99115 indexCount = mesh->indexArray .getDataSize ();
100116 }
117+
101118}
102119
103120OpenGLVertexBuffer::~OpenGLVertexBuffer () {
@@ -106,6 +123,16 @@ OpenGLVertexBuffer::~OpenGLVertexBuffer() {
106123 glDeleteBuffersARB (1 , &normalBufferID);
107124 glDeleteBuffersARB (1 , &colorBufferID);
108125 glDeleteBuffersARB (1 , &indexBufferID);
126+ glDeleteBuffersARB (1 , &boneWeightBufferID);
127+ glDeleteBuffersARB (1 , &boneIndexBufferID);
128+ }
129+
130+ GLuint OpenGLVertexBuffer::getBoneWeightBufferID () {
131+ return boneWeightBufferID;
132+ }
133+
134+ GLuint OpenGLVertexBuffer::getBoneIndexBufferID () {
135+ return boneIndexBufferID;
109136}
110137
111138GLuint OpenGLVertexBuffer::getColorBufferID () {
0 commit comments