Khronos OpenGL 2.1 Specs では、glStencilMask が glClear の動作に影響を与えるはずであると書かれていますが、私のマシンではそうではないようです。
私が現在得ている出力は次のとおりです。
Stencil value: (0,0) 0xff
私が期待する出力は次のとおりです。
Stencil value: (0,0) 0xf0
これが私のコードです:
void renderScene(void) {
unsigned char pix;
int i [4];
/* Clear the stencil buffer initially */
glClearStencil(0x0);
glClear(GL_STENCIL_BUFFER_BIT);
/* Applies the following: 1111 0000 & 1111 1111 */
glStencilMask(0xF0);
glClearStencil(0xFF);
glClear(GL_STENCIL_BUFFER_BIT);
glFlush();
glReadPixels(0,0,1,1,GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &pix);
printf("Stencil value (0,0): %x\n",pix);
}
int main(int argc, char **argv) {
// init GLUT and create Window
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_STENCIL );
glutInitWindowPosition(500,500);
glutInitWindowSize(320, 320);
glutCreateWindow("Trial");
// register callbacks
glutDisplayFunc(renderScene);
// enter GLUT event processing cycle
glutMainLoop();
return 1;
}
(もちろん他にもいろいろな描画などを行っていましたが、これは私が見た問題を示しています)