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
Post a Comment