6
glEnable(GL_CULL_FACE);
glCullFace(GL_FRONT);

glPolygonMode(GL_BACK,GL_LINE);

上記のコードサンプルでは、​​glPolygonModeは無効な列挙型エラーをスローしますか?この問題を解決するにはどうすればよいですか?

4

1 に答える 1

9

GL_INVALID_ENUM質問の顔またはモード (それぞれ 1 番目と 2 番目のパラメーター) が受け入れられない値である場合に生成されます。最初のパラメーターは、このメソッドでは廃止されているためGL_FRONT_AND_BACK、前面および背面のポリゴン用である必要があります。GL_FRONTGL_BACK

編集

コメントで別の質問をしているようです。塗りつぶされたポリゴンの周りにインクを描画する場合は、ジオメトリを 2 回レンダリングする必要があります。塗りつぶしとワイヤーフレームをレンダリングします。ワイヤーフレームを少しずらして、デプス ファイティングを回避します。そうしないと、2 つのジオメトリがオーバーラップする可能性があります

// first draw your polygon filled (this is assuming your glPolygonMode is set to GL_FILL - this is the default mode normally)
// draw your polygons

// offset the wireframe 
glEnable(GL_POLYGON_OFFSET_LINE);
glPolygonOffset(-1,-1);

// draw the wireframe
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
// draw the same polygons again

// restore default polygon mode
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

glDisable(GL_POLYGON_OFFSET_LINE);
于 2012-11-18T09:40:10.450 に答える