// // Copyright (c) 2015 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. // // VertexAttribute.inl: Inline vertex attribute methods // namespace gl { inline VertexAttribCurrentValueData::VertexAttribCurrentValueData() : Type(GL_FLOAT) { FloatValues[0] = 0.0f; FloatValues[1] = 0.0f; FloatValues[2] = 0.0f; FloatValues[3] = 1.0f; } inline void VertexAttribCurrentValueData::setFloatValues(const GLfloat floatValues[4]) { for (unsigned int valueIndex = 0; valueIndex < 4; valueIndex++) { FloatValues[valueIndex] = floatValues[valueIndex]; } Type = GL_FLOAT; } inline void VertexAttribCurrentValueData::setIntValues(const GLint intValues[4]) { for (unsigned int valueIndex = 0; valueIndex < 4; valueIndex++) { IntValues[valueIndex] = intValues[valueIndex]; } Type = GL_INT; } inline void VertexAttribCurrentValueData::setUnsignedIntValues(const GLuint unsignedIntValues[4]) { for (unsigned int valueIndex = 0; valueIndex < 4; valueIndex++) { UnsignedIntValues[valueIndex] = unsignedIntValues[valueIndex]; } Type = GL_UNSIGNED_INT; } inline bool operator==(const VertexAttribCurrentValueData &a, const VertexAttribCurrentValueData &b) { return (a.Type == b.Type && memcmp(a.FloatValues, b.FloatValues, sizeof(float) * 4) == 0); } inline bool operator!=(const VertexAttribCurrentValueData &a, const VertexAttribCurrentValueData &b) { return !(a == b); } } // namespace gl