opengl es - Xamarin Forms GLView keeps blank on iOS -


i’m trying build app ios , android xamarin forms, showing fluid liquidfun , opengl es 3. on android got working, on ios gl view keeps black.

from liquidfun pointer required informations show fluid, passed opengl, seems work, cause on android works fine , if use opengl es2 context same code works glsl 200 shaders.

private void render() {     eaglcontext.setcurrentcontext(context);  //context opengl es 3      if (!initialized)     {         initpixelsize();          gl.genframebuffers(1, out mainfb);         gl.bindframebuffer(framebuffertarget.framebuffer, mainfb);          gl.genrenderbuffers(1, out colorrenderbuffer);         gl.bindrenderbuffer(renderbuffertarget.renderbuffer, colorrenderbuffer);          gl.renderbufferstorage(renderbuffertarget.renderbuffer, renderbufferinternalformat.rgb8, widthpixel, heightpixel);         gl.framebufferrenderbuffer(framebuffertarget.framebuffer, framebufferslot.colorattachment0, renderbuffertarget.renderbuffer, colorrenderbuffer);          gl.viewport(0, 0, widthpixel, heightpixel);          createprogramwithshaders();         initialized = true;     }      int drawframebuffer, renderbuffer;     gl.getinteger(getpname.framebufferbinding, out drawframebuffer);     gl.getinteger(getpname.renderbufferbinding, out renderbuffer);     int firstframebuffer = drawframebuffer;       // render post-processing framebuffer     gl.bindframebuffer(framebuffertarget.framebuffer, firstframebuffer);     gl.bindrenderbuffer(renderbuffertarget.renderbuffer, renderbuffer);     checkglerror("after bindframebuffer drawframebuffer");      gl.clearcolor(color4.black);     gl.clear(clearbuffermask.colorbufferbit);     checkglerror("after clearcolor , clear");      // render soup     gl.enable(enablecap.blend);     checkglerror("after enable");     gl.blendfunc(blendingfactorsrc.srcalpha, blendingfactordest.one);     checkglerror("after blendfunc");     drawbase();     checkglerror("after drawbase");      gl.disable(enablecap.blend);     checkglerror("after disabel");      //gl.finish();     checkglerror("after finish"); }   private void drawbase() {     gl.useprogram(drawingprogram);     checkglerror("after useprogram");      // enable     gl.enablevertexattribarray(positionslot);     gl.enablevertexattribarray(projectionslot);     checkglerror("after enable vertex...");      setupvbos();     checkglerror("after setupvbos");      gl.drawarrays(beginmode.points, 0, positionprovider.getparticlecount());     checkglerror("after drawarrays");     //gl.drawelements(beginmode.points, positionprovider.getparticlecount(), drawelementstype.unsignedint, positionprovider.getpositions());      // disable     gl.disablevertexattribarray(positionslot);     gl.disablevertexattribarray(projectionslot);     checkglerror("after disabel vertex..."); }  private void setupvbos() {     gl.vertexattribpointer(positionslot, 2, vertexattribpointertype.float, false, vector2.sizeinbytes, positionprovider.getpositions()); //2     checkglerror("in setupvbos - after gl vertex attrib");      gl.uniformmatrix4(projectionslot, false, ref projectionmatrix);     checkglerror("in setupvbos - after uniform"); }  private void createprogramwithshaders() {     drawingprogram = gl.createprogram();     if (drawingprogram == 0)     throw new invalidoperationexception("unable create program");     checkglerror("create drawingprogram");     logger.add2log("drawingprogram: " + drawingprogram);      int vertexshader = openglhelper.loadshader("komplexvertexshader", shadertype.vertexshader);     int fragmentshader = openglhelper.loadshader("komplexfragmentshader", shadertype.fragmentshader);      gl.bindattriblocation(drawingprogram, 0, "position");     checkglerror("bind attrib location");      gl.attachshader(drawingprogram, vertexshader);     gl.attachshader(drawingprogram, fragmentshader);     checkglerror("after attach shader");      if (!openglhelper.linkandcheckprogram(drawingprogram))     {         logger.add2log("error when linking program komplexvertexshader , komplexfragmentshader");     }     checkglerror("linking program");      // attribute (pointer only)            positionslot = gl.getattriblocation(drawingprogram, "position");     projectionslot = gl.getuniformlocation(drawingprogram, "projection");     logger.add2log("attribute locations: " + positionslot + " - " + projectionslot); } 

running code doesn't show opengl errors.

hope can me! thanks, hendrik


Comments

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -