我在MS WindowsXP下工作,我的显卡是itel GMA4500, 我的代码:
glClearStencil(0);
glClear(GL_STENCIL_BUFFER_BIT);
unsigned char* data = new unsigned char[width*height];
glPixelStorei(GL_PACK_ALIGNMENT,1);
glReadPixels(0,0,width,height,GL_STENCIL_INDEX,GL_UNSIGNED_BYTE,data);
但是当我检查数据缓冲区时,我可以看到字节不是全为零, 那有什么问题?
是的,我确定我有一个模板缓冲区,在调用glReadPixels之后,我检查了glGetError,没有错误。我也试过memset用零填充数据缓冲区,但结果没有改变。
答案 0 :(得分:5)
你真的有模板缓冲区吗?如果没有, glReadPixels 将引发错误(检查 glGetError(...))并保持目标缓冲区的内容不变。
答案 1 :(得分:0)
您的意思是使用
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
因为你试图从模板缓冲区获取内容吗?