iPhone OpenGLテンプレートは不正行為ですか?
-
24-10-2019 - |
質問
XcodeのOpenGLテンプレートは、この「ストレッチされた」ビューポートの問題を解決して、私が過去3時間理解しようとしてきた不正行為をしているようです。
iPhone「OpenGL ESアプリケーション」テンプレートでは、画面上で上下に跳ね返るカラフルな正方形は、実際には正方形ではありません!
es1renderer.m (ES2ファイルも同様です)
static const GLfloat squareVertices[] = {
-0.5f, -0.33f,
0.5f, -0.33f,
-0.5f, 0.33f,
0.5f, 0.33f,
};
しかし、非二乗ビューポートのストレッチ/スカッシング効果のため、デバイス/シミュレーターの正方形の外観になります。 glfrustumf()をいじって修正しようとしましたが、それはアスペクト比を変更しないようです。
glviewport()に1:1 widht:heightを供給したときに、見栄えが良い(伸ばされていない)物事を手に入れることができました。
このストレッチを修正する正しい方法は何ですか?Xcodeがそのようにしないのはなぜですか?
解決
答えは次のとおりです。
Xcodeはこのように不正行為をして、フラストムをセットアップするために必要な追加のコードと混同しないようにします。
これが私が1つをセットアップするために使用しているコードです。
const GLfloat zNear = 0.0001, zFar = 1000.0, fieldOfView = 45.0;
GLfloat size;
size = zNear * tanf(DEGREES_TO_RADIANS(fieldOfView) / 2.0);
aspectRatio = (GLfloat) backingWidth / backingHeight;
glFrustumf(-size,//left
size,//right
(GLfloat)-size / aspectRatio,//bottom
(GLfloat)size / aspectRatio,//top
zNear,//zNear
zFar);//zFar
glViewport(0, 0, backingWidth, backingHeight);
それが誰かを助けることを願っています。
所属していません StackOverflow