OpenGL2.1を搭載したMacOSX用のアプリを書いています
CVOpenGLTextureRef
GL_QUADSでレンダリングしたテクスチャを保持するがあり、すべてが正常に機能します。
テクスチャのどのピクセルが黒であるかを判断する必要があるため、テクスチャから生データを読み取るために次のコードを記述しました。
//"image" is the CVOpenGLTextureRef
GLenum textureTarget = CVOpenGLTextureGetTarget(image);
GLuint textureName = CVOpenGLTextureGetName(image);
glEnable(textureTarget);
glBindTexture(textureTarget, textureName);
GLint textureWidth, textureHeight;
int bytes;
glGetTexLevelParameteriv(textureTarget, 0, GL_TEXTURE_WIDTH, &textureWidth);
glGetTexLevelParameteriv(textureTarget, 0, GL_TEXTURE_HEIGHT, &textureHeight);
bytes = textureWidth*textureHeight;
GLfloat buffer[bytes];
glGetTexImage(textureTarget, 0, GL_LUMINANCE, GL_FLOAT, &buffer);
GLenum error = glGetError();
glGetError()
レポートしますGL_NO_ERROR
が、呼び出し後のバッファは変更されませんglGetTexImage()
...それはまだ空白です。
私は何か間違ったことをしていますか?
glReadPixels()
レンダリングする前にテクスチャを変更し、変更されていないテクスチャの生データを取得する必要があるため、使用できないことに注意してください。
編集:私はその後のアプローチでも試しましたが、出力としてまだゼロバッファがあります
unsigned char *buffer = (unsigned char *)malloc(textureWidth * textureHeight * sizeof(unsigned char));
glGetTexImage(textureTarget, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, buffer);
EDIT2:同じ問題がこことここで報告されています