我正在试图找出模板.现在我只是用模板值绘制一些框,然后读取值.每次我用GL_STENCIL_INDEX调用glReadPixels时,我都会得到GL_INVALID_OPERATION.这是有问题的代码:
glPixelStorei(GL_PACK_ALIGNMENT, 1);
GLfloat tempStencilVal = 3;
glGetError();
glReadPixels(10, g_window1Height-10, 1, 1, GL_STENCIL_INDEX, GL_FLOAT, &tempStencilVal);
if (glGetError() == GL_INVALID_OPERATION) {std::cout << "GL Invalid Operation\n";}
else {std::cout << "X: " << 10 << " Y: " << 10 << " S: " << tempStencilVal << "\n";}
Run Code Online (Sandbox Code Playgroud)
我尝试了5种不同的数据格式,3种不同的glPixelStore模式,并且重复了7次glReadPixels错误列表.(是的,OGL 2.1)如果我将STENCIL_INDEX更改为DEPTH_COMPONENT,它可以正常工作.我唯一无法确认的是我是否有模板缓冲区.是否有一些初始化我缺少或一些glGet来检查?
潜在的相关信息:Win7 x64 SP1 | 华硕GTX650Ti | VS2012旗舰版
下面是绘制框的函数的代码,以防它引起它:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, g_window1Width, -g_window1Height, 0, 0.0, 50.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glScaled(1.0, -1.0, -1.0);
glTranslated(0.0, 0.0, 0.5);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClearStencil(0);
glClear(GL_COLOR_BUFFER_BIT | …Run Code Online (Sandbox Code Playgroud)