OpenGL ESを使って単純な円を描こうとしています。問題は、円が垂直に伸びていることです。それは円よりも楕円のように見えます。誰かが物事がうまくいかないことを指摘できますか?OpenGL ESで描画を伸ばす - iOS
これを修正するためにglViewPortで遊んだが成功しなかった。 StackOverflowの上ここに提案し、他の誰かとして、私はまた、代わりに単位行列の異なる行列をロードしようと、それはあまりにも動作しません...
ここdrawFrameのコードです:
- (void)drawFrame
{
[(EAGLView *)self.view setFramebuffer];
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
GLfloat vertices[720];
for (int i = 0; i < 720; i += 2)
{
vertices[i] = (cos(degreesToRadians(i)) * 1);
vertices[i+1] = (sin(degreesToRadians(i)) * 1);
}
glVertexPointer(2, GL_FLOAT, 0, vertices);
glEnableClientState(GL_VERTEX_ARRAY);
glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
glDrawArrays(GL_TRIANGLE_FAN, 0, 360);
[(EAGLView *)self.view presentFramebuffer];
}
ありがとうございました。私はあなたのソリューションを私がhttp://stackoverflow.com/questions/1067833/whyopengles-stretch-my-3d-modelに持っているものと組み合わせて、それが私を助けました。 glViewPort/glOrthofを動作させることはできませんでしたが、値を持つ新しい行列を作成してロードしました: GLfloat aspectRatio = self.view.bounds.size.height/self.view.bounds.size.width ;フロートM [16] = { アスペクト比、0、0、0、 0、1、0、0、 0、0、1、0、 0、0、0、1} 。 glMatrixMode(GL_PROJECTION); glLoadMatrixf(m);それは狂っている - >それは動作しますが、私はどのように理解できません。 – Ravi