-1

X軸を描画するためにこのコードを書きます:

   glPushMatrix();
   glColor3f(0.5f, 0, 0);
   glVertex3f(-size, 0, 0);
   glVertex3f( size, 0, 0);
   glPopMatrix();

しかし、コードのこの部分を追加して矢印を描画すると; shperes などの他のすべての形状は非表示になります。

 glBegin(GL_TRIANGLES);     // Drawing Using Triangles
 glVertex3f( 10.0f, 0.0f, 0.0f);        // Top
 glVertex3f(9.0f, 0.25f, 0.0f);     // Bottom Left
 glVertex3f(9.0f,-0.25f, 0.0f);     // Bottom Right
 glEnd();

私の間違いは何ですか?

4

1 に答える 1

1

このコードには問題があります

 glPushMatrix();
 glColor3f(0.5f, 0, 0);
 glVertex3f(-size, 0, 0);
 glVertex3f( size, 0, 0);
 glPopMatrix();

glVertex は、glBegin と glEnd の間でのみ呼び出すことができます。ただし、glBegin と glEnd の間で glPushMatrix と glPopMatrix を呼び出すことはできません。実際の行列操作が行われていないため、それらを記述した方法では、とにかく効果がありません。

一方、すべてのプリミティブの Z 座標は同一です。したがって、物事が互いにオーバードローすることは非常に理解できます。また、深度テストをまったく有効にしていないに違いないので、深度テストがないと、深度に関係なく他のものをオーバードローするため、とにかく問題にはなりません。

于 2013-10-26T10:14:41.863 に答える