在工作的時候使用glUseProgram
設置prgram,然後通過glGetIntegerv(GL_CURRENT_PROGRAM, &pid)
檢查當前的計劃,但pid
回報0
。所以我不能使用這個着色器。着色器已編譯並鏈接正常。glUseProgram不會在iOS中
代碼:
[EAGLContext setCurrentContext:context1];
glBindFramebuffer(GL_FRAMEBUFFER, Framebuffer1);
//there have many render option use shader1;
//and the shader1 is work normal.
glBindRenderbuffer(GL_RENDERBUFFER,Renderbuffer1);
[context1 presentRenderbuffer:GL_RENDERBUFFER];
glFlush();
[EAGLContext setCurrentContext:context2];
glBindFramebuffer(GL_FRAMEBUFFER, Framebuffer2);
//than gluseprogram(shader1) ,
//check current shader return 0;
//but no glError
glBindRenderbuffer(GL_RENDERBUFFER,Renderbuffer2);
[context2 presentRenderbuffer:GL_RENDERBUFFER];
爲什麼不能重新設置着色器?
在iOS中,我認爲只是使用EAGLContext * context2 = [[EAGLContext alloc] initWithAPI:context1.API sharegroup:context1.sharegroup]; ,,,兩個上下文將使用相同的共享組。我在第二次之前使用gluseprogram(0),並且可以成功呈現。我不知道爲什麼? – Alex