2011-08-15 28 views
2
glEnable(GL_TEXTURE_2D); 
glEnable(GL_BLEND); 
glBlendFunc(GL_ONE, GL_SRC_COLOR); 
glShadeModel(GL_SMOOTH); // Разрешить плавное сглаживание 
glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Черный фон 
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); // Сглаживание линий 
glEnable(GL_BLEND);   // Разрешить смешивание 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

glEnableClientState(GL_VERTEX_ARRAY); 
glEnableClientState(GL_NORMAL_ARRAY); 

//set the format and location for verticies 
glVertexPointer(3, GL_FLOAT, 0, vertices); 

glNormalPointer(GL_FLOAT, 0, normals); 

glCullFace(GL_FRONT); 
glDepthFunc(GL_LEQUAL); 

//draw the triangles 
glDrawArrays(GL_TRIANGLES, 0, numberOfVertices); 

ここに私のコードがあります。なぜコードが機能しないのかわかりません。私は助言に非常に感謝します。はOpenGLでスムーズに動作しません。

+0

あなたがしようとしていることの説明を追加できますか? –

+0

はい、もちろんです。私は頂点と法線をファイルから読みます。そして、このコードはモデルをロードして描画します。私は三角形で描いています。モデルは完璧ですが、スムーズでは機能しません。理由はわかりません。 – Oleg

+0

@Oleg私はコードが完璧に動作すると言いますが、逆のことを証明するために、あなたが期待することと何をするのかを記述します。 –

答えて

1

スムーズという用語を正しく理解していないようです。

まず、GL_LINE_SMOOTH_HINTは行にのみ影響します。さらに、私はthe documentationを参照しています。

次に、glShadeModel()は、次のプリミティブに必要なシェーディングのタイプを設定します。 GL_SMOOTHは、頂点の色をそれぞれの結果のピクセルフラグメントに補間します。しかし、GL_FLATは頂点の計算色を1つしか取らず、プリミティブが表す各ピクセルフラグメントに自動的に割り当てます。さらに、私はthe documentationを参照しています。

ご了承くださいのスムーズさは、あなたが思うように、三角形に適用できません。 実際にの場合は、のモデルを円滑にモデルにする必要があります。モデルのポリゴン数を増やす必要があります。

+0

そのアドバイスに大きな感謝。 – Oleg

関連する問題