#include "precompiled.h" // // Copyright 2014 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // Implementation of the state class for mananging GLES 3 Vertex Array Objects. // #include "libGLESv2/VertexAttribute.h" namespace gl { VertexAttribute::VertexAttribute() : enabled(false), type(GL_FLOAT), size(4), normalized(false), pureInteger(false), stride(0), pointer(NULL), divisor(0) { } size_t ComputeVertexAttributeTypeSize(const VertexAttribute& attrib) { GLuint size = attrib.size; switch (attrib.type) { case GL_BYTE: return size * sizeof(GLbyte); case GL_UNSIGNED_BYTE: return size * sizeof(GLubyte); case GL_SHORT: return size * sizeof(GLshort); case GL_UNSIGNED_SHORT: return size * sizeof(GLushort); case GL_INT: return size * sizeof(GLint); case GL_UNSIGNED_INT: return size * sizeof(GLuint); case GL_INT_2_10_10_10_REV: return 4; case GL_UNSIGNED_INT_2_10_10_10_REV: return 4; case GL_FIXED: return size * sizeof(GLfixed); case GL_HALF_FLOAT: return size * sizeof(GLhalf); case GL_FLOAT: return size * sizeof(GLfloat); default: UNREACHABLE(); return size * sizeof(GLfloat); } } size_t ComputeVertexAttributeStride(const VertexAttribute& attrib) { if (!attrib.enabled) { return 16; } return attrib.stride ? attrib.stride : ComputeVertexAttributeTypeSize(attrib); } }