OSDN Git Service

Adding new object types for OpenGL ES 3.0
authorAlexis Hetu <sugoi@google.com>
Thu, 2 Apr 2015 19:31:39 +0000 (15:31 -0400)
committerAlexis Hétu <sugoi@google.com>
Thu, 9 Apr 2015 14:12:47 +0000 (14:12 +0000)
New objects:
- Sampler
- Transform feedback
- Vertex Array

Change-Id: I701ea5fea75b81196290c3bdb3230cd471cc537b
Reviewed-on: https://swiftshader-review.googlesource.com/2796
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
12 files changed:
src/Main/Config.hpp
src/OpenGL/libGLESv2/Android.mk
src/OpenGL/libGLESv2/Context.cpp
src/OpenGL/libGLESv2/Context.h
src/OpenGL/libGLESv2/Sampler.h [new file with mode: 0644]
src/OpenGL/libGLESv2/Texture.h
src/OpenGL/libGLESv2/TransformFeedback.cpp [new file with mode: 0644]
src/OpenGL/libGLESv2/TransformFeedback.h [new file with mode: 0644]
src/OpenGL/libGLESv2/VertexArray.h [new file with mode: 0644]
src/OpenGL/libGLESv2/libGLESv2.cbp
src/OpenGL/libGLESv2/libGLESv2.vcxproj
src/OpenGL/libGLESv2/libGLESv2.vcxproj.filters

index a5bc115..f94e447 100644 (file)
@@ -76,6 +76,7 @@ enum
        MAX_UNIFORM_BLOCKS_COMPONENTS = 49152,\r
        MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = MAX_UNIFORM_BLOCKS_COMPONENTS + 4 * FRAGMENT_UNIFORM_VECTORS,\r
        MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = MAX_UNIFORM_BLOCKS_COMPONENTS + 4 * VERTEX_UNIFORM_VECTORS,\r
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 4,\r
 };\r
 \r
 #endif   // sw_Config_hpp\r
index f2ce744..22c43e1 100644 (file)
@@ -121,6 +121,7 @@ LOCAL_SRC_FILES += \
        ResourceManager.cpp \
        Shader.cpp \
        Texture.cpp \
+       TransformFeedback.cpp \
        utilities.cpp \
        VertexDataManager.cpp \
 
index 34e5ee3..a82b12f 100644 (file)
 #include "Program.h"\r
 #include "Query.h"\r
 #include "Renderbuffer.h"\r
+#include "Sampler.h"\r
 #include "Shader.h"\r
 #include "Texture.h"\r
+#include "TransformFeedback.h"\r
+#include "VertexArray.h"\r
 #include "VertexDataManager.h"\r
 #include "IndexDataManager.h"\r
 #include "libEGL/Display.h"\r
@@ -138,6 +141,9 @@ Context::Context(const egl::Config *config, const Context *shareContext, EGLint
     mTextureCubeMapZero = new TextureCubeMap(0);\r
     mTextureExternalZero = new TextureExternal(0);\r
 \r
+       mState.transformFeedback = new TransformFeedback(0);\r
+       mTransformFeedbackMap[0] = mState.transformFeedback;\r
+\r
     mState.activeSampler = 0;\r
     bindArrayBuffer(0);\r
     bindElementArrayBuffer(0);\r
@@ -826,6 +832,36 @@ GLuint Context::createQuery()
     return handle;\r
 }\r
 \r
+// Returns an unused vertex array name\r
+GLuint Context::createVertexArray()\r
+{\r
+       GLuint handle = mVertexArrayNameSpace.allocate();\r
+\r
+       mVertexArrayMap[handle] = NULL;\r
+\r
+       return handle;\r
+}\r
+\r
+// Returns an unused transform feedback name\r
+GLuint Context::createTransformFeedback()\r
+{\r
+       GLuint handle = mTransformFeedbackNameSpace.allocate();\r
+\r
+       mTransformFeedbackMap[handle] = NULL;\r
+\r
+       return handle;\r
+}\r
+\r
+// Returns an unused sampler name\r
+GLuint Context::createSampler()\r
+{\r
+       GLuint handle = mSamplerNameSpace.allocate();\r
+\r
+       mSamplerMap[handle] = NULL;\r
+\r
+       return handle;\r
+}\r
+\r
 void Context::deleteBuffer(GLuint buffer)\r
 {\r
     if(mResourceManager->getBuffer(buffer))\r
@@ -909,6 +945,57 @@ void Context::deleteQuery(GLuint query)
     }\r
 }\r
 \r
+void Context::deleteVertexArray(GLuint vertexArray)\r
+{\r
+       VertexArrayMap::iterator vertexArrayObject = mVertexArrayMap.find(vertexArray);\r
+\r
+       if(vertexArrayObject != mVertexArrayMap.end())\r
+       {\r
+               mVertexArrayNameSpace.release(vertexArrayObject->first);\r
+\r
+               if(vertexArrayObject->second)\r
+               {\r
+                       vertexArrayObject->second->release();\r
+               }\r
+\r
+               mVertexArrayMap.erase(vertexArrayObject);\r
+       }\r
+}\r
+\r
+void Context::deleteTransformFeedback(GLuint transformFeedback)\r
+{\r
+       TransformFeedbackMap::iterator transformFeedbackObject = mTransformFeedbackMap.find(transformFeedback);\r
+\r
+       if(transformFeedbackObject != mTransformFeedbackMap.end())\r
+       {\r
+               mTransformFeedbackNameSpace.release(transformFeedbackObject->first);\r
+\r
+               if(transformFeedbackObject->second)\r
+               {\r
+                       transformFeedbackObject->second->release();\r
+               }\r
+\r
+               mTransformFeedbackMap.erase(transformFeedbackObject);\r
+       }\r
+}\r
+\r
+void Context::deleteSampler(GLuint sampler)\r
+{\r
+       SamplerMap::iterator samplerObject = mSamplerMap.find(sampler);\r
+\r
+       if(samplerObject != mSamplerMap.end())\r
+       {\r
+               mSamplerNameSpace.release(samplerObject->first);\r
+\r
+               if(samplerObject->second)\r
+               {\r
+                       samplerObject->second->release();\r
+               }\r
+\r
+               mSamplerMap.erase(samplerObject);\r
+       }\r
+}\r
+\r
 Buffer *Context::getBuffer(GLuint handle)\r
 {\r
     return mResourceManager->getBuffer(handle);\r
@@ -1011,6 +1098,43 @@ void Context::bindRenderbuffer(GLuint renderbuffer)
     mState.renderbuffer = getRenderbuffer(renderbuffer);\r
 }\r
 \r
+bool Context::bindVertexArray(GLuint array)\r
+{\r
+       VertexArray* vertexArray = getVertexArray(array);\r
+\r
+       if(vertexArray)\r
+       {\r
+               mState.vertexArray = vertexArray;\r
+       }\r
+\r
+       return !!vertexArray;\r
+}\r
+\r
+bool Context::bindTransformFeedback(GLuint id)\r
+{\r
+       TransformFeedback* transformFeedback = getTransformFeedback(id);\r
+\r
+       if(transformFeedback)\r
+       {\r
+               mState.transformFeedback = transformFeedback;\r
+               return true;\r
+       }\r
+\r
+       return false;\r
+}\r
+\r
+bool Context::bindSampler(GLuint unit, GLuint sampler)\r
+{\r
+       Sampler* samplerObject = getSampler(sampler);\r
+\r
+       if(sampler)\r
+       {\r
+               mState.sampler[unit] = samplerObject;\r
+       }\r
+\r
+       return !!samplerObject;\r
+}\r
+\r
 void Context::useProgram(GLuint program)\r
 {\r
     GLuint priorProgram = mState.currentProgram;\r
@@ -1180,6 +1304,27 @@ Query *Context::getQuery(unsigned int handle, bool create, GLenum type)
     }\r
 }\r
 \r
+VertexArray *Context::getVertexArray(GLuint array)\r
+{\r
+       VertexArrayMap::iterator vertexArray = mVertexArrayMap.find(array);\r
+\r
+       return (vertexArray == mVertexArrayMap.end()) ? NULL : vertexArray->second;\r
+}\r
+\r
+TransformFeedback *Context::getTransformFeedback(GLuint transformFeedback)\r
+{\r
+       TransformFeedbackMap::iterator transformFeedbackObject = mTransformFeedbackMap.find(transformFeedback);\r
+\r
+       return (transformFeedbackObject == mTransformFeedbackMap.end()) ? NULL : transformFeedbackObject->second;\r
+}\r
+\r
+Sampler *Context::getSampler(GLuint sampler)\r
+{\r
+       SamplerMap::iterator samplerObject = mSamplerMap.find(sampler);\r
+\r
+       return (samplerObject == mSamplerMap.end()) ? NULL : samplerObject->second;\r
+}\r
+\r
 Buffer *Context::getArrayBuffer()\r
 {\r
     return mState.arrayBuffer;\r
@@ -1258,6 +1403,20 @@ bool Context::getBooleanv(GLenum pname, GLboolean *params)
       case GL_DITHER:                   *params = mState.dither;                    break;\r
       case GL_PRIMITIVE_RESTART_FIXED_INDEX: *params = mState.primitiveRestartFixedIndex; break;\r
       case GL_RASTERIZER_DISCARD:       *params = mState.rasterizerDiscard;         break;\r
+      case GL_TRANSFORM_FEEDBACK_ACTIVE:\r
+                 if(mState.transformFeedback)\r
+                 {\r
+                         *params = mState.transformFeedback->isActive();\r
+                         break;\r
+                 }\r
+                 else return false;\r
+      case GL_TRANSFORM_FEEDBACK_PAUSED:\r
+                 if(mState.transformFeedback)\r
+                 {\r
+                         *params = mState.transformFeedback->isPaused();\r
+                         break;\r
+                 }\r
+                 else return false;\r
       default:\r
         return false;\r
     }\r
@@ -1780,17 +1939,33 @@ bool Context::getTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param)
                *param = 0;\r
                break;\r
        case GL_TRANSFORM_FEEDBACK_ACTIVE: // boolean, initially GL_FALSE\r
-               *param = GL_FALSE;\r
-               break;\r
+               if(mState.transformFeedback)\r
+               {\r
+                       *param = mState.transformFeedback->isActive();\r
+                       break;\r
+               }\r
+               else return false;\r
        case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: // name, initially 0\r
-               *param = 0;\r
-               break;\r
+               if(mState.transformFeedback && mState.transformFeedback->getGenericBuffer())\r
+               {\r
+                       *param = mState.transformFeedback->getGenericBuffer()->name;\r
+                       break;\r
+               }\r
+               else return false;\r
        case GL_TRANSFORM_FEEDBACK_PAUSED: // boolean, initially GL_FALSE\r
-               *param = GL_FALSE;\r
-               break;\r
+               if(mState.transformFeedback)\r
+               {\r
+                       *param = mState.transformFeedback->isPaused();\r
+                       break;\r
+               }\r
+               else return false;\r
        case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: // indexed[n] 64-bit integer, initially 0\r
-               *param = 0;\r
-               break;\r
+               if(mState.transformFeedback && mState.transformFeedback->getGenericBuffer())\r
+               {\r
+                       *param = mState.transformFeedback->getGenericBuffer()->size();\r
+                       break;\r
+               }\r
+               else return false;\r
        case GL_TRANSFORM_FEEDBACK_BUFFER_START: // indexed[n] 64-bit integer, initially 0\r
                *param = 0;\r
                break;\r
index e6cefb1..833315a 100644 (file)
@@ -21,6 +21,7 @@
 #include "common/Object.hpp"\r
 #include "Image.hpp"\r
 #include "Renderer/Sampler.hpp"\r
+#include "TransformFeedback.h"\r
 \r
 #define GL_APICALL\r
 #include <GLES2/gl2.h>\r
@@ -65,6 +66,8 @@ class VertexDataManager;
 class IndexDataManager;\r
 class Fence;\r
 class Query;\r
+class Sampler;\r
+class VertexArray;\r
 \r
 enum\r
 {\r
@@ -254,6 +257,9 @@ struct State
     GLuint drawFramebuffer;\r
     gl::BindingPointer<Renderbuffer> renderbuffer;\r
     GLuint currentProgram;\r
+    gl::BindingPointer<VertexArray> vertexArray;\r
+       gl::BindingPointer<TransformFeedback> transformFeedback;\r
+       gl::BindingPointer<Sampler> sampler[MAX_COMBINED_TEXTURE_IMAGE_UNITS];\r
 \r
     VertexAttribute vertexAttribute[MAX_VERTEX_ATTRIBS];\r
     gl::BindingPointer<Texture> samplerTexture[TEXTURE_TYPE_COUNT][MAX_COMBINED_TEXTURE_IMAGE_UNITS];\r
@@ -387,6 +393,18 @@ public:
     GLuint createQuery();\r
     void deleteQuery(GLuint query);\r
 \r
+       // Vertex arrays are owned by the Context\r
+       GLuint createVertexArray();\r
+       void deleteVertexArray(GLuint array);\r
+\r
+       // Transform feedbacks are owned by the Context\r
+       GLuint createTransformFeedback();\r
+       void deleteTransformFeedback(GLuint transformFeedback);\r
+\r
+       // Samplers are owned by the Context\r
+       GLuint createSampler();\r
+       void deleteSampler(GLuint sampler);\r
+\r
     void bindArrayBuffer(GLuint buffer);\r
     void bindElementArrayBuffer(GLuint buffer);\r
     void bindTexture2D(GLuint texture);\r
@@ -396,6 +414,9 @@ public:
     void bindReadFramebuffer(GLuint framebuffer);\r
     void bindDrawFramebuffer(GLuint framebuffer);\r
     void bindRenderbuffer(GLuint renderbuffer);\r
+       bool bindVertexArray(GLuint array);\r
+       bool bindTransformFeedback(GLuint transformFeedback);\r
+       bool bindSampler(GLuint unit, GLuint sampler);\r
     void useProgram(GLuint program);\r
 \r
        void beginQuery(GLenum target, GLuint query);\r
@@ -415,6 +436,10 @@ public:
     Framebuffer *getFramebuffer(GLuint handle);\r
     virtual Renderbuffer *getRenderbuffer(GLuint handle);\r
        Query *getQuery(GLuint handle, bool create, GLenum type);\r
+       VertexArray *getVertexArray(GLuint array);\r
+       TransformFeedback *getTransformFeedback(GLuint transformFeedback);\r
+       TransformFeedback *getTransformFeedback();\r
+       Sampler *getSampler(GLuint sampler);\r
 \r
     Buffer *getArrayBuffer();\r
     Buffer *getElementArrayBuffer();\r
@@ -503,6 +528,18 @@ private:
     QueryMap mQueryMap;\r
     gl::NameSpace mQueryNameSpace;\r
 \r
+       typedef std::map<GLint, VertexArray*> VertexArrayMap;\r
+       VertexArrayMap mVertexArrayMap;\r
+       gl::NameSpace mVertexArrayNameSpace;\r
+\r
+       typedef std::map<GLint, TransformFeedback*> TransformFeedbackMap;\r
+       TransformFeedbackMap mTransformFeedbackMap;\r
+       gl::NameSpace mTransformFeedbackNameSpace;\r
+\r
+       typedef std::map<GLint, Sampler*> SamplerMap;\r
+       SamplerMap mSamplerMap;\r
+       gl::NameSpace mSamplerNameSpace;\r
+\r
     VertexDataManager *mVertexDataManager;\r
     IndexDataManager *mIndexDataManager;\r
 \r
diff --git a/src/OpenGL/libGLESv2/Sampler.h b/src/OpenGL/libGLESv2/Sampler.h
new file mode 100644 (file)
index 0000000..e0b9502
--- /dev/null
@@ -0,0 +1,59 @@
+// SwiftShader Software Renderer\r
+//\r
+// Copyright(c) 2015 Google Inc.\r
+//\r
+// All rights reserved. No part of this software may be copied, distributed, transmitted,\r
+// transcribed, stored in a retrieval system, translated into any human or computer\r
+// language by any means, or disclosed to third parties without the explicit written\r
+// agreement of Google Inc. Without such an agreement, no rights or licenses, express\r
+// or implied, including but not limited to any patent rights, are granted to you.\r
+//\r
+\r
+// Sampler.h: Defines the es2::Sampler class\r
+\r
+#ifndef LIBGLESV2_SAMPLER_H_\r
+#define LIBGLESV2_SAMPLER_H_\r
+\r
+#include "common/Object.hpp"\r
+#include "Renderer/Renderer.hpp"\r
+\r
+#define GL_APICALL\r
+#include <GLES2/gl2.h>\r
+\r
+namespace es2\r
+{\r
+\r
+class Sampler : public gl::Object\r
+{\r
+public:\r
+       Sampler(GLuint name) : Object(name)\r
+       {\r
+               mMinFilter = GL_NEAREST_MIPMAP_LINEAR;\r
+               mMagFilter = GL_LINEAR;\r
+\r
+               mWrapModeS = GL_REPEAT;\r
+               mWrapModeT = GL_REPEAT;\r
+               mWrapModeR = GL_REPEAT;\r
+\r
+               mMinLod = -1000.0f;\r
+               mMaxLod = 1000.0f;\r
+               mCompareMode = GL_NONE;\r
+               mCompareFunc = GL_LEQUAL;\r
+       }\r
+\r
+       GLenum mMinFilter;\r
+       GLenum mMagFilter;\r
+\r
+       GLenum mWrapModeS;\r
+       GLenum mWrapModeT;\r
+       GLenum mWrapModeR;\r
+\r
+       GLfloat mMinLod;\r
+       GLfloat mMaxLod;\r
+       GLenum mCompareMode;\r
+       GLenum mCompareFunc;\r
+};\r
+\r
+}\r
+\r
+#endif // LIBGLESV2_SAMPLER_H_\r
index bb6b6b7..7a9a3b4 100644 (file)
@@ -46,7 +46,7 @@ enum
        IMPLEMENTATION_MAX_SAMPLES = 4,\r
        IMPLEMENTATION_MAX_COLOR_ATTACHMENTS = 8,\r
        IMPLEMENTATION_MAX_DRAW_BUFFERS = 8,\r
-       IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 4,\r
+       IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,\r
        IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS = 36,\r
        IMPLEMENTATION_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 1,\r
 };\r
diff --git a/src/OpenGL/libGLESv2/TransformFeedback.cpp b/src/OpenGL/libGLESv2/TransformFeedback.cpp
new file mode 100644 (file)
index 0000000..8c403dc
--- /dev/null
@@ -0,0 +1,85 @@
+// SwiftShader Software Renderer\r
+//\r
+// Copyright(c) 2015 Google Inc.\r
+//\r
+// All rights reserved. No part of this software may be copied, distributed, transmitted,\r
+// transcribed, stored in a retrieval system, translated into any human or computer\r
+// language by any means, or disclosed to third parties without the explicit written\r
+// agreement of Google Inc. Without such an agreement, no rights or licenses, express\r
+// or implied, including but not limited to any patent rights, are granted to you.\r
+//\r
+\r
+// TransformFeedback.cpp: Implements the es2::TransformFeedback class\r
+\r
+#include "TransformFeedback.h"\r
+\r
+#include "Buffer.h"\r
+\r
+namespace es2\r
+{\r
+\r
+TransformFeedback::TransformFeedback(GLuint name) : Object(name), mActive(false), mPaused(false)\r
+{\r
+       mGenericBuffer = NULL;\r
+}\r
+\r
+Buffer* TransformFeedback::getGenericBuffer() const\r
+{\r
+       return mGenericBuffer;\r
+}\r
+\r
+Buffer* TransformFeedback::getBuffer(GLuint index) const\r
+{\r
+       return mBuffer[index];\r
+}\r
+\r
+bool TransformFeedback::isActive() const\r
+{\r
+       return mActive;\r
+}\r
+\r
+bool TransformFeedback::isPaused() const\r
+{\r
+       return mPaused;\r
+}\r
+\r
+GLenum TransformFeedback::primitiveMode() const\r
+{\r
+       return mPrimitiveMode;\r
+}\r
+\r
+void TransformFeedback::begin(GLenum primitiveMode)\r
+{\r
+       mActive = true; mPrimitiveMode = primitiveMode;\r
+}\r
+\r
+void TransformFeedback::end()\r
+{\r
+       mActive = false;\r
+}\r
+\r
+void TransformFeedback::setPaused(bool paused)\r
+{\r
+       mPaused = paused;\r
+}\r
+\r
+void TransformFeedback::setGenericBuffer(Buffer* buffer)\r
+{\r
+       mGenericBuffer = buffer;\r
+}\r
+\r
+void TransformFeedback::setBuffer(GLuint index, Buffer* buffer)\r
+{\r
+       mBuffer[index] = buffer;\r
+}\r
+\r
+void TransformFeedback::setBuffer(GLuint index, Buffer* buffer, GLintptr offset, GLsizeiptr size)\r
+{\r
+       mBuffer[index] = buffer;\r
+       if(buffer)\r
+       {\r
+               buffer->mapRange(offset, size, buffer->access());\r
+       }\r
+}\r
+\r
+}\r
diff --git a/src/OpenGL/libGLESv2/TransformFeedback.h b/src/OpenGL/libGLESv2/TransformFeedback.h
new file mode 100644 (file)
index 0000000..52a1bfe
--- /dev/null
@@ -0,0 +1,57 @@
+// SwiftShader Software Renderer\r
+//\r
+// Copyright(c) 2015 Google Inc.\r
+//\r
+// All rights reserved. No part of this software may be copied, distributed, transmitted,\r
+// transcribed, stored in a retrieval system, translated into any human or computer\r
+// language by any means, or disclosed to third parties without the explicit written\r
+// agreement of Google Inc. Without such an agreement, no rights or licenses, express\r
+// or implied, including but not limited to any patent rights, are granted to you.\r
+//\r
+\r
+// TransformFeedback.h: Defines the es2::TransformFeedback class\r
+\r
+#ifndef LIBGLESV2_TRANSFORM_FEEDBACK_H_\r
+#define LIBGLESV2_TRANSFORM_FEEDBACK_H_\r
+\r
+#include "common/Object.hpp"\r
+#include "Renderer/Renderer.hpp"\r
+\r
+#define GL_APICALL\r
+#include <GLES2/gl2.h>\r
+\r
+namespace es2\r
+{\r
+class Buffer;\r
+\r
+class TransformFeedback : public gl::Object\r
+{\r
+public:\r
+       // FIXME: Change this when implementing transform feedback\r
+       TransformFeedback(GLuint name);\r
+\r
+       Buffer* getGenericBuffer() const;\r
+       Buffer* getBuffer(GLuint index) const;\r
+       bool isActive() const;\r
+       bool isPaused() const;\r
+       GLenum primitiveMode() const;\r
+\r
+       void setGenericBuffer(Buffer* buffer);\r
+       void setBuffer(GLuint index, Buffer* buffer);\r
+       void setBuffer(GLuint index, Buffer* buffer, GLintptr offset, GLsizeiptr size);\r
+       void begin(GLenum primitiveMode);\r
+       void end();\r
+       void setPaused(bool paused);\r
+\r
+private:\r
+       gl::BindingPointer<Buffer> mGenericBuffer;\r
+       gl::BindingPointer<Buffer> mBuffer[MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS];\r
+\r
+       bool mActive;\r
+       bool mPaused;\r
+       GLenum mPrimitiveMode;\r
+};\r
+\r
+}\r
+\r
+#endif // LIBGLESV2_TRANSFORM_FEEDBACK_H_\r
diff --git a/src/OpenGL/libGLESv2/VertexArray.h b/src/OpenGL/libGLESv2/VertexArray.h
new file mode 100644 (file)
index 0000000..c3c2b87
--- /dev/null
@@ -0,0 +1,32 @@
+// SwiftShader Software Renderer\r
+//\r
+// Copyright(c) 2015 Google Inc.\r
+//\r
+// All rights reserved. No part of this software may be copied, distributed, transmitted,\r
+// transcribed, stored in a retrieval system, translated into any human or computer\r
+// language by any means, or disclosed to third parties without the explicit written\r
+// agreement of Google Inc. Without such an agreement, no rights or licenses, express\r
+// or implied, including but not limited to any patent rights, are granted to you.\r
+//\r
+\r
+// VertexArray.h: Defines the es2::VertexArray class\r
+\r
+#ifndef LIBGLESV2_VERTEX_ARRAY_H_\r
+#define LIBGLESV2_VERTEX_ARRAY_H_\r
+\r
+#include "common/Object.hpp"\r
+#include "Renderer/Renderer.hpp"\r
+\r
+#define GL_APICALL\r
+#include <GLES2/gl2.h>\r
+\r
+namespace es2\r
+{\r
+\r
+class VertexArray : public gl::Object\r
+{\r
+};\r
+\r
+}\r
+\r
+#endif // LIBGLESV2_VERTEX_ARRAY_H_\r
index 83585ab..6f08551 100644 (file)
                <Unit filename="Renderbuffer.h" />
                <Unit filename="ResourceManager.cpp" />
                <Unit filename="ResourceManager.h" />
+               <Unit filename="Sampler.h" />
                <Unit filename="Shader.cpp" />
                <Unit filename="Shader.h" />
                <Unit filename="Texture.cpp" />
                <Unit filename="Texture.h" />
+               <Unit filename="TransformFeedback.cpp" />
+               <Unit filename="TransformFeedback.h" />
+               <Unit filename="VertexArray.h" />
                <Unit filename="VertexDataManager.cpp" />
                <Unit filename="VertexDataManager.h" />
                <Unit filename="exports.map" />
index 63eb632..f47b891 100644 (file)
@@ -337,6 +337,7 @@ copy "$(OutDir)libGLESv2.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)_$(Plat
     <ClCompile Include="ResourceManager.cpp" />\r
     <ClCompile Include="Shader.cpp" />\r
     <ClCompile Include="Texture.cpp" />\r
+    <ClCompile Include="TransformFeedback.cpp" />\r
     <ClCompile Include="utilities.cpp" />\r
     <ClCompile Include="VertexDataManager.cpp" />\r
   </ItemGroup>\r
@@ -361,9 +362,12 @@ copy "$(OutDir)libGLESv2.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)_$(Plat
     <ClInclude Include="Renderbuffer.h" />\r
     <ClInclude Include="resource.h" />\r
     <ClInclude Include="ResourceManager.h" />\r
+    <ClInclude Include="Sampler.h" />\r
     <ClInclude Include="Shader.h" />\r
     <ClInclude Include="Texture.h" />\r
+    <ClInclude Include="TransformFeedback.h" />\r
     <ClInclude Include="utilities.h" />\r
+    <ClInclude Include="VertexArray.h" />\r
     <ClInclude Include="VertexDataManager.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
index ea77fb1..683b67a 100644 (file)
@@ -74,6 +74,9 @@
     <ClCompile Include="libGLESv3.cpp">\r
       <Filter>Source Files</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="TransformFeedback.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="Buffer.h">\r
     <ClInclude Include="..\common\NameSpace.hpp">\r
       <Filter>Header Files</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="Sampler.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="TransformFeedback.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="VertexArray.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ResourceCompile Include="libGLESv2.rc" />\r