case GL_VERTEX_ARRAY_BINDING: // GLint, initially 0\r
*params = getCurrentVertexArray()->name;\r
break;\r
+ case GL_TRANSFORM_FEEDBACK_BINDING:\r
+ {\r
+ TransformFeedback* transformFeedback = getTransformFeedback(mState.transformFeedback);\r
+ if(transformFeedback)\r
+ {\r
+ *params = transformFeedback->name;\r
+ }\r
+ else\r
+ {\r
+ return false;\r
+ }\r
+ }\r
+ break;\r
+ case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:\r
+ {\r
+ TransformFeedback* transformFeedback = getTransformFeedback(mState.transformFeedback);\r
+ if(transformFeedback)\r
+ {\r
+ *params = transformFeedback->getGenericBufferName();\r
+ }\r
+ else\r
+ {\r
+ return false;\r
+ }\r
+ }\r
+ break;\r
default:\r
return false;\r
}\r
return true;\r
}\r
\r
-template bool Context::getTransformFeedbackiv<GLint>(GLuint xfb, GLenum pname, GLint *param) const;\r
-template bool Context::getTransformFeedbackiv<GLint64>(GLuint xfb, GLenum pname, GLint64 *param) const;\r
+template bool Context::getTransformFeedbackiv<GLint>(GLuint index, GLenum pname, GLint *param) const;\r
+template bool Context::getTransformFeedbackiv<GLint64>(GLuint index, GLenum pname, GLint64 *param) const;\r
\r
-template<typename T> bool Context::getTransformFeedbackiv(GLuint xfb, GLenum pname, T *param) const\r
+template<typename T> bool Context::getTransformFeedbackiv(GLuint index, GLenum pname, T *param) const\r
{\r
- UNIMPLEMENTED();\r
-\r
TransformFeedback* transformFeedback = getTransformFeedback(mState.transformFeedback);\r
if(!transformFeedback)\r
{\r
switch(pname)\r
{\r
case GL_TRANSFORM_FEEDBACK_BINDING: // GLint, initially 0\r
- *param = 0;\r
+ *param = transformFeedback->name;\r
break;\r
case GL_TRANSFORM_FEEDBACK_ACTIVE: // boolean, initially GL_FALSE\r
*param = transformFeedback->isActive();\r
break;\r
case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: // name, initially 0\r
- *param = transformFeedback->name;\r
+ *param = transformFeedback->getBufferName(index);\r
break;\r
case GL_TRANSFORM_FEEDBACK_PAUSED: // boolean, initially GL_FALSE\r
*param = transformFeedback->isPaused();\r
break;\r
case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: // indexed[n] 64-bit integer, initially 0\r
- if(transformFeedback->getGenericBuffer())\r
+ if(transformFeedback->getBuffer(index))\r
{\r
- *param = transformFeedback->getGenericBuffer()->size();\r
+ *param = transformFeedback->getSize(index);\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
+ if(transformFeedback->getBuffer(index))\r
+ {\r
+ *param = transformFeedback->getOffset(index);\r
break;\r
+ }\r
+ else return false;\r
default:\r
return false;\r
}\r
case GL_UNPACK_SKIP_PIXELS:\r
case GL_UNPACK_SKIP_ROWS:\r
case GL_VERTEX_ARRAY_BINDING:\r
+ case GL_TRANSFORM_FEEDBACK_BINDING:\r
+ case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:\r
{\r
*type = GL_INT;\r
*numParams = 1;\r
return mBuffer[index].get();\r
}\r
\r
+GLuint TransformFeedback::getGenericBufferName() const\r
+{\r
+ return mGenericBuffer.name();\r
+}\r
+\r
+GLuint TransformFeedback::getBufferName(GLuint index) const\r
+{\r
+ return mBuffer[index].get().name();\r
+}\r
+\r
+int TransformFeedback::getOffset(GLuint index) const\r
+{\r
+ return mBuffer[index].getOffset();\r
+}\r
+\r
+int TransformFeedback::getSize(GLuint index) const\r
+{\r
+ return mBuffer[index].getSize();\r
+}\r
+\r
bool TransformFeedback::isActive() const\r
{\r
return mActive;\r