844 |
return result; |
return result; |
845 |
} |
} |
846 |
|
|
847 |
|
GLuint buf[1600 * 1200]; |
848 |
|
|
849 |
|
JNIEXPORT void JNICALL Java_gzz_gfx_gl_GZZGL_reallyClearStencilBuffer |
850 |
|
(JNIEnv *env, jclass, jint w, jint h) { |
851 |
|
|
852 |
|
if(w*h > 1600*1200) return; |
853 |
|
|
854 |
|
cout << "In reallyClear\n\n"; |
855 |
|
glPixelStorei(GL_PACK_ALIGNMENT, 1); |
856 |
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); |
857 |
|
cout << "Set up\n"; |
858 |
|
glReadPixels(0, 0, w, h, GL_DEPTH_STENCIL_NV, GL_UNSIGNED_INT_24_8_NV, buf); |
859 |
|
cout << "Read pix\n"; |
860 |
|
GLERR |
861 |
|
for(int i=0; i<w*h; i++) { |
862 |
|
if(buf[i] != 0) { |
863 |
|
cout << "Buf "<<i<<" "<<buf[i]<<"\n"; |
864 |
|
goto nonzero; |
865 |
|
} |
866 |
|
} |
867 |
|
cout << "done\n"; |
868 |
|
return; |
869 |
|
nonzero: |
870 |
|
cout << "STENCIL CLEARING: NOT ALL ZERO!!!!\n"; |
871 |
|
for(int i=0; i<w*h; i++) buf[i] = 0; |
872 |
|
cout << "rastpos\n"; |
873 |
|
glPushAttrib(GL_ENABLE_BIT); |
874 |
|
glDisable(GL_DEPTH_TEST); |
875 |
|
glDisable(GL_STENCIL_TEST); |
876 |
|
glStencilMask(255); |
877 |
|
glRasterPos2d(0,0); |
878 |
|
glDrawPixels(w, h, GL_DEPTH_STENCIL_NV, GL_UNSIGNED_INT_24_8_NV, buf); |
879 |
|
glRasterPos2d(0,1); |
880 |
|
glDrawPixels(w, h, GL_DEPTH_STENCIL_NV, GL_UNSIGNED_INT_24_8_NV, buf); |
881 |
|
glRasterPos2d(1,0); |
882 |
|
glDrawPixels(w, h, GL_DEPTH_STENCIL_NV, GL_UNSIGNED_INT_24_8_NV, buf); |
883 |
|
glRasterPos2d(1,1); |
884 |
|
glDrawPixels(w, h, GL_DEPTH_STENCIL_NV, GL_UNSIGNED_INT_24_8_NV, buf); |
885 |
|
glRasterPos2d(w,h); |
886 |
|
glDrawPixels(w, h, GL_DEPTH_STENCIL_NV, GL_UNSIGNED_INT_24_8_NV, buf); |
887 |
|
glRasterPos2d(w,0); |
888 |
|
glDrawPixels(w, h, GL_DEPTH_STENCIL_NV, GL_UNSIGNED_INT_24_8_NV, buf); |
889 |
|
glRasterPos2d(0,h); |
890 |
|
glDrawPixels(w, h, GL_DEPTH_STENCIL_NV, GL_UNSIGNED_INT_24_8_NV, buf); |
891 |
|
glPopAttrib(); |
892 |
|
cout << "drawn\n"; |
893 |
|
} |
894 |
|
|
895 |
|
|
896 |
|
|