2016-04-03 10 views
0

まあ、問題はかなり単純ですが、私は問題を見ていないとデバッガは私を助けていないです。とにかく、私は飛行機を描こうとしています、そして、私が得るものはすべて黒です。私はそれを描くかどうか正直には分かりませんが、見るには小さすぎます。opengl glDrawElementsの問題

int index[][3] = {{0,1,4}, {0,3,4}, {1,2,5}, {1,4,5}}; 
double VertexA[][3] = {{0.0 , 0.0 , -.0415}, {0.5, 0.0, .6543}, {1.0,0,-.0415}, 
         {0.0, 0.5, .093}, {0.5, 0.5, -.070}, {1.0, 0.5 , .093}, 
         {0.0,1.0, -.0415}, {0.5, 1.0, .6543}, {1.0,1.0,-.0415}} 

void display() { 
    glClear(GL_COLOR_BUFFER_BIT); 
    glLoadIdentity(); 
    glEnableClientState(GL_VERTEX_ARRAY); 
    glVertexPointer(3, GL_DOUBLE, 24, VertexA); 
    glDrawElements(GL_TRIANGLES, 4, GL_UNSIGNED_INT, index); 
    glDisableClientState(GL_VERTEX_ARRAY); 
    glutSwapBuffers(); 
} 
void reshape(int w, int h) { 
    if (w <= h) { 
     glViewport(0,(h-w)/2, w,w); 
    } 
    else { 
     glViewport((w-h)/2,0,h,h); 
    } 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(30.0, w/h, 10.0, 100.0); 
    glMatrixMode(GL_MODELVIEW); 

} 

これは、定義済みのVertexA/Index配列で変更されたコードのスニペットです。インデックス/ vertexArrayが正しく取得されていることを確信しています。描画の部分は問題が発生する場所です。私はglDrawElementまたはgluPerspectiveを誤用していると推測しています。正直、私はよくわからない。 ColorArrayが必要ですか?最初の場所に色を定義していないのは白でなければなりませんか?どんな質問やあなたがスニペットの詳細を欲しがっているのですか?私はスニペットの中に問題があると感じています。

+0

脇に:私のコンパイラは '.0.5'(あなたの3行目)で' double'を初期化しようとすると、構文エラーを出します。 –

+0

修正しました、それはタイプミスでしたが、私はVertexA/Indexデータを取得する場所全体のコードを投稿したくありませんでした – Leruce

答えて

2

関数gluPerspectiveは、aspectの浮動小数点引数を必要とします。あなたの行は

gluPerspective(30.0, w/h, 10.0, 100.0); 

ですが、計算はw/hは整数除算です。 (double)w/hまたはおそらく(GLdouble)w/hを使用することをお勧めします。

+0

intは二重に強制されませんでしたか?さて、私はチェックしてテストしました。助けてくれていないようでした。 znear/zfarはうまく見えますか?私はそれが問題だとは思わないが、理想的なものを決める方法を決して決して決して決めることはできない。 – Leruce

+1

申し訳ありません、それは助けになりませんでした。除算はターゲットタイプに関係なく実行されます。式は含まれるタイプに従って評価され、必要に応じてターゲットタイプに変換されます。 –

3

あなたのオブジェクトは完全に錐台から外れています。 ModelViewとして恒等行列を使用していて、とnear=10およびfar=100を投影として使用しています。結果として、オブジェクトはz = -0.1からz = 0.1にある間、ビューボリュームはz = -10からz = -100になるので、それらは近平面によってクリップされます。