2017-01-15 4 views
3

青い球の幅が広がっている(opengl、C++で)コードを見てください。どうすれば修正できますか、伸びることなく翻訳が必要です。伸びを避けるためにコードを修正してもらえますか? 私のコード:glTranslatefが私の球体を伸ばしていますが、球体を伸ばしずに球体をどのように翻訳できますか?

#include <GL/glut.h> 

static void resize(int width, int height) 
{ 
    const float ar = (float) width/(float) height; 
    glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0); 
} 

static void display(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    glColor3d(0,0,1); 
    glPushMatrix(); 
     glTranslatef(3.0, 0.0, -6.0); 
     glutSolidSphere(1,50,50); 
    glPopMatrix(); 

    glColor3d(1,0,0); 
    glPushMatrix(); 
     glTranslatef(0.0, 0.0, -6.0); 
     glutSolidSphere(1,50,50); 
    glPopMatrix(); 
    glutSwapBuffers(); 
} 

int main(int argc, char *argv[]) 
{ 
    glutInit(&argc, argv); 
    glutInitWindowSize(1200,1200); 
    glutCreateWindow("gggggggggggg"); 
    glutReshapeFunc(resize); 
    glClearColor(1,1,1,1); 
    glutDisplayFunc(display); 
    glutMainLoop(); 
} 
+0

私はこれを尋ねられました:何十年も非難されているOpenGLコードを使用している理由はありますか? – GraphicsMuncher

+0

いいえ他のオプションについてはわかりません。あなたは何を使用することをお勧めしますか?私は、重心(特定の軸の周り)を中心に回転し、お互いに向かって回転する2つの楕円体の3D衝突シミュレーションを試みています。 –

+0

私はそれがOpenGL 4.0以降、そしておそらくGLSLを必要とするコアプロファイルを対象としていたと思います。あなたが働いているアプリケーションをしたい場合、OpenGL 1.0はまだ有効です... OpenGL 4.0以上はgfxベンダーの間ではまだよくサポートされていません。 Unforseen HWの非互換性gfxの問題で簡単に終わることができます。ゲームをコーディングする場合は、有効なGPUを持つことが期待されていても問題ありませんが(例えば、製造現場では)、新しいGLのものがうまく動作しないインテルや東芝の無駄がたくさんあります。 – Spektre

答えて

1

歪みがglFrustumから来ています。これは、あなたが求めていることをする投影の例です。

glOrtho(-5, 5, -5/ar, 5/ar, -20, 20); 
+0

ありがとう、非常にありがとう。 –

関連する問題