我在屏幕上绘制纹理没有问题,但从内存中打印时无法获得正确的像素。我有一个带有 4 个黑色像素的 4x4 png 图像,我正在尝试打印它们。这就是我所做的:
glBindTexture(GL_TEXTURE_2D, m_textureId);
const int size = m_width * m_height * 4;
GLubyte pixels[size];
glReadPixels(0, 0, m_width, m_height, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
if(glGetError() != GL_NO_ERROR)
assert(false && "opengl error");
for(int index = 0; index < size; index+=4)
{
cout << "red " << (unsigned)pixels[index+0] << endl;
cout << "green " << (unsigned)pixels[index+1] << endl;
cout << "blue " << (unsigned)pixels[index+2] << endl;
}
但我得到的是所有随机值,而不是我期望的值。谁能看出我做错了什么?
最佳答案
glReadPixels 从帧缓冲区而不是纹理中读取。要检索纹理对象的内容,请使用 glGetTexImage:http://www.opengl.org/sdk/docs/man/xhtml/glGetTexImage.xml
关于iphone - iphone 上的 glreadPixels 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4700641/