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);

これが私のコードですが、コードが機能しない理由がわかりません。アドバイスをいただければ幸いです。

4

1 に答える 1

1

この文脈では、スムーズという用語を正しく理解していないようです。

まず、GL_LINE_SMOOTH_HINT行のみに影響します。さらに、ドキュメントを参照します。

次に、glShadeModel()次のプリミティブが持つべきシェーディングのタイプを設定します。GL_SMOOTH結果の各ピクセルフラグメントで頂点の色が補間されます。GL_FLATただし、頂点の計算された色を 1 つだけ取得し、それをプリミティブが表す各ピクセル フラグメントに自動的に割り当てます。さらに、ドキュメントを参照します。

滑らかさについてのあなたの理解は、あなたが思っているように、三角形には当てはまりません。本当に滑らかなモデルが必要な場合は、モデル内のポリゴン数を増やす必要があります。

于 2011-08-15T15:37:59.267 に答える