void Context::setVertexFormat( const VertexFormat& format, void* data ) { int offset = 0; int formatAttributeCount = format.attributeCount(); for(int i = 0; i < formatAttributeCount; ++i) { const VertexAttribute& newAttribute = format.attribute(i); //if(m_Attributes[i] != newAttribute) // TODO: GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING und so { m_Attributes[i] = newAttribute; if(i >= m_ActiveAttributes) { // Enable .. glEnableVertexAttribArray(i); } // Setup .. glVertexAttribPointer( i, // the identifier newAttribute.dataType().componentCount(), // size (i.e. how many elements of type) ConvertToGL(newAttribute.dataType().primitveType()), // type newAttribute.isNormalized(), format.sizeInBytes(), // stride between each element of this attribute (void*)((long)data+offset) // offset from the beginning ); } offset += newAttribute.dataType().sizeInBytes(); } if(formatAttributeCount < m_ActiveAttributes) { for(int i = formatAttributeCount; i < m_ActiveAttributes; ++i) { // Disable .. glDisableVertexAttribArray(i); } } m_ActiveAttributes = formatAttributeCount; }