3

立方体を作成しようとしています。キューブ自体をクリア(背景が黒なので黒)にしたいのですが、12本の線を細くて白にしたいです。これを行って線を作成し、それらをエッジの上に配置する唯一の方法はありますか?それとも、それにアプローチする別の方法がありますか?

その理由は、ボックス内でバウンドするボールを作成する必要があるためです。

たぶん、glBegin(GL_LINES)を実行するだけで、数学的に作成できるので、衝突するサーフェスについて心配する必要はありませんか?

私はこのように自分の側を作成しています:

glBegin(GL_POLYGON);
glVertex3f( -0.5, -0.5,  0.5 );
glVertex3f( -0.5,  0.5,  0.5 );
glVertex3f( -0.5,  0.5, -0.5 );
glVertex3f( -0.5, -0.5, -0.5 );
glEnd();
4

3 に答える 3

6

'wireframe'キューブを描画するだけです。エッジは表示されますが、面は表示されません。塗りつぶしモードを、ポリゴンではなく線を配線してレンダリングするように設定します。

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);  // this tells it to only render lines

glBegin(GL_LINES);

// endpoints of 1 line/edge
glVertex3f( ... 
glVertex3f( ...

// endpoints of second line/edge
glVertex3f( 
glVertex3f( 

// on up thru all 12 lines/edges

glEnd();

さて、これは最も効率的ではありません。おそらくラインストリップを使用するか、6つのクワッドを描画することができます。しかし、これは「初日」なので、簡単に始めることができます。

最終的には、固定機能をまったく使用したくないでしょう-それは非推奨です。ただし、これにより、マトリックスやライティングなどに慣れるための環境が提供されます。レンダリングする深刻なジェモエトリーがある場合は、それをバッファーに入れて、GPUに大きなチャンクで送信し、GLSLシェーダーに処理させます。グラフィックカード上のデータ。

グラフィックへようこそ!

于 2012-11-05T21:25:25.597 に答える
1

たぶん、glBegin(GL_LINES)を実行するだけで、数学的に作成できるので、衝突するサーフェスについて心配する必要はありませんか?

正しい。あなたはすでにあなたの立方体の境界を知っています。

いくつかの行を行い、ボールをバウンスします。

于 2012-11-05T21:24:58.607 に答える
0

同じことを実現するために、ポリゴンモード(glPolygonMode、ここを読んでください)をGL_LINEに設定することができます。

たぶん、glBegin(GL_LINES)を実行するだけで、数学的に作成できるので、衝突するサーフェスについて心配する必要はありませんか?

OpenGLは、いかなる種類の衝突でもあなたを助けるつもりはありません。

ややオフトピックノートとして、より現代的なアプローチの使用を検討してください。新しいOpenGLバージョンを使用していない場合でも、イミディエイトモードの描画は事実上非推奨になっています。

これは始めるのにまともな場所です

于 2012-11-05T21:27:13.213 に答える