1

私はopenGLを初めて使用し、glOrthoの概念を理解するのに苦労しています。たとえば、私は持っています:

void display(void)
{
/* clear all pixels  */
glClear (GL_COLOR_BUFFER_BIT);
/* draw black polygon (rectangle) with corners at * (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0)
*/
glColor3f (0.0, 0.0, 0.0);
glBegin(GL_POLYGON);
  glVertex3f (-.25,0,0.0);
  glVertex3f (.25, 0, 0.0);
  glVertex3f (.25, .25, 0.0);
  glVertex3f (-.25, .25, 0.0);
glEnd();
/* don’t wait!
* start processing buffered OpenGL routines */
glFlush (); }

これにより長方形が生成され、次に長方形が「変形」されます。

void init (void)
/* this function sets the initial state */ {
/* select clearing (background) color to white */
glClearColor (1.0, 1.0, 1.0, 0.0);
/* initialize viewing values */ 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity();
glOrtho(0, 1, 1, 0.0, -1.0,1.0);
}

これでほぼ正方形になり、左上隅に配置されます。それがどのように行われるのかわかりません。ポイントは長方形に変換されていますか?

編集:それを理解した。これはとても役に立ちました。http://elvenware.sourceforge.net/OpenGLNotes.html#Ortho

4

2 に答える 2

5

glOrtho正投影ボリュームを定義するために使用されます。

署名はglOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); 左右でx座標のクリッピング平面を指定し、下と上でy座標のクリッピング平面を指定し、nearとfarでz座標のクリッピング平面までの距離を指定します。これらの座標を組み合わせることで、ボックス型の表示ボリュームが提供されます。

投影のボリュームを定義した方法は、ポイント3d(0、0、0)を中心としていませんが、(。5、-5、0)代わりに、この方法でglOrthoを定義する必要がありglOrtho(-.5, .5, -.5, .5, -1.0, 1.0);ます。ポリゴンは中心を中心としているため、ポイント3d(0、0、0)。(投影ボリュームの中心に一致するようにポリゴンの座標を変更することもできます)。

于 2012-09-20T23:24:18.450 に答える
2

呼び出しglOrthoは、左上が(0,0)、右下が(1,1)で、有効なZ範囲が(-1,1)になるようにビューポートを設定します。

ここで、左上が(-0.25、-0.25)から(0.25,0.25)の正方形を描きました。

呼び出しは、glVertexそれらのすぐ上のコメントと一致しません。頂点を指定した値に変更するか、glOrtho呼び出しを変更します。

glOrtho(-0.5, 0.5, 0.5, -0.5, -1.0, 1.0 );
于 2012-09-20T23:26:54.670 に答える