我刚开始为我的跨平台框架(iOS和Android)使用opengl es开发渲染器。当我处理视口问题(这对于分屏很重要)时,我注意到iOS和Android之间有所不同。以下是两张图片。
Android
实际上还有一个小故障。看起来好像出现了包裹现象。
iOS
我的问题。
这两者中哪个才是正确的?我没有运用变换,只有将绘制的四边形后移一点的操作。glTranslatef(0.0f, 0.0f, -5.f);
初始化代码:
也许Android或iOS默认设置了一些东西?我不知道。
![Android quarter sized viewport](https://istack.dev59.com/uXt4K.webp)
![iOS quarter size viewport](https://istack.dev59.com/YRX4P.webp)
初始化代码:
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH); //Enable Smooth Shading
glClearColor(0.f, 0.f, 0.f, 1.0f); //Black Background
glClearDepthf(1.0f); //Depth Buffer Setup
glEnable(GL_DEPTH_TEST); //Enables Depth Testing
glDepthFunc(GL_LEQUAL); //The Type Of Depth Testing To Do
//Really Nice Perspective Calculations
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
视口和项目代码
glViewport(viewportX, viewportY, viewportW, viewportH);.
glEnable(GL_SCISSOR_TEST);
glScissor(viewportX, viewportY, viewportW, viewportH);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
最后,通过计算视锥体并设置glFrustrum。我还使用了以下代码:
float widthH = width * .1f;
float heightH = height * .1f;
glOrthof(-widthH, widthH, -heightH, heightH, .1f, 100.f);
glScalef(widthH, heightH, 1.f);
也许Android或iOS默认设置了一些东西?我不知道。