マニュアル教える拡張マジック・グラフィックス・エンジニア(パート3)| Yiziyiziは、OpenGLのチュートリアルをノック

:次のように私たちは、詳細に説明しましょう
マニュアル教える拡張マジック・グラフィックス・エンジニア(パート3)| Yiziyiziは、OpenGLのチュートリアルをノック
ビューまず、glMatrixModel()関数の最初の文を。この機能は、実際には、私が欲しい、次のステップを実行する前に「何を」操作、「何を」の「()」のオプションにglMatrixModeコンピュータ(パラメータ)を伝える文について次に何をすべきかが行われます3つのモードがあります。我々はそれをしなければならないGL_PROJECTION投影、GL_MODELVIEWモデルビュー、GL_TEXTUREテクスチャここでは、モデルのビューを変更することがあるので、パラメータがGL_MODELVIEW ..です 少し後に、我々は残りの二つを再訪します。

glTranslatef()、glRotatef()とglScalef()これらの3つの機能を見て。パラメータはGLfloatタイプパラメータがGLdouble型であり、端部においてDに変化したされるように、三つの関数Fで終わります。

まず、glTranslatef()関数は、3つのパラメータX、Y、Z軸並進成分に沿って、意味します。

glRotatef()関数は、最初のパラメータは回転角度であり、バック3つのパラメータに沿った回転の(X、Y、Z)に(0,0,0)からのベクトル方向を示しています。次いでクリア実際には、X、Y、点のZ座標を表現するわけではないことが、回転軸の周りであることがあります。ただやる右手の法則を覚えていますか?座標(0,0,0)の原点から、すなわち、このラインを保持右手で、(X、Y、Z)に引いた線。XYZは、それを保持する方向に(1,0,0)を指す(0、0)、右手親指(0,0,0)と仮定する。回転の方向であるオブジェクトを指し示すさらに4つの湾曲フィンガ。なぜ、あなたの右手には、手を離れ、ないですか?OpenGLは右手の法則に従っているので。私はあなたがシステムと右手の法則座標何を言わせてしまうなぜ、あなたはちょうど良い見て、今見て、この段落を理解していなかった場合はここでは理解します。

最後glScalef()、つまり、3つのパラメータX、Y、Z軸のズーム倍率。

重要な問題の実行順序、順序が図の符号123来るのために底部、すなわちから順に従います。順序は、実際には、非常に異なるに違いはないように思われます。

ここでは順序は抽選の最終結果に影響を与える理由を知るための例です:
マニュアル教える拡張マジック・グラフィックス・エンジニア(パート3)| Yiziyiziは、OpenGLのチュートリアルをノック
今、フィニッシュ最初glMatrixModel(GL_MODELVIEW)まで。次はglMatrixModel(GL_PROJECTION)です。パラメータがGL_PROJECTIONである場合、これは、投影され、投影動作に関連する射影変換手段、オブジェクトは投資2次元平面上の3次元オブジェクトとしての我々のカメラとして、平面上に投影されます。このように、次のステートメントは、視点に関連付けられている関数とすることができます。

ここでは二つの機能を紹介します:

glOrtho(XL、XR、YB、YT、亜鉛、ZF)。

gluPerspectiveなので(fovy、態様、亜鉛、ZF)。

最初の機能はglOrtho正射影または平行投影であり、第二の突起は斜視gluPerspectiveです。

マニュアル教える拡張マジック・グラフィックス・エンジニア(パート3)| Yiziyiziは、OpenGLのチュートリアルをノック
私が最初にglOrthoをお話しましょう。(すなわち、空間の矩形領域である)平行視野ボリュームの作成。実際には、この関数の動作は、正射影行列を作成することであり、この行列は、現在の行列と乗算されます。シーンにおけるオブジェクトだけが本文に表示することができ、最後の2つのパラメータは、視聴ボリュームの深さ、全体の視野ボリュームが平面に押し込まれていない、0,0の後に変更され、もちろん、それが正しく表示されません。

第二の機能gluPerspectiveで。対称行列斜視錐台を作成し、それを現在の行列と乗算されます。YZ平面、0~180°の範囲で画角フィールドをfovy。良い範囲は、一般的に50〜100°です。アスペクト比は、円錐台の側面、幅で割った値、すなわち高さです。値は、遠近(Z軸負方向に)近位の面と観測点とファークリッピング平面クリッピングされ、二つの値が正です。
マニュアル教える拡張マジック・グラフィックス・エンジニア(パート3)| Yiziyiziは、OpenGLのチュートリアルをノック
この第二の仕上げglMatrixModel(GL_PROJECTION)。第三GL_TEXTUREは最初であることを覚えて、彼は再び精巧なテクスチャを話しました。

コードは以下のコードに展開することができます。
マニュアル教える拡張マジック・グラフィックス・エンジニア(パート3)| Yiziyiziは、OpenGLのチュートリアルをノック
今、つまり視覚的変換およびビューポート変換の不足分を残し、モデル変換、形質転換された投影を行ってきました。ここでは、変換のこれら二つのセットを行います。

機能のご紹介:

gluLookAt( ex, ey, ez, lx, ly, lz, ux, uy, uz );

这个函数第一组eyex, eyey,eyez 相机在世界坐标的位置,第二组centerx,centery,centerz 相机镜头对准的物体在世界坐标的位置,第三组upx,upy,upz 相机向上的方向在世界坐标中的方向。你把相机想象成为你自己的脑袋:第一组数据就是脑袋的位置,第二组数据就是眼睛看的物体的位置,第三组就是头顶朝向的方向(因为你可以歪着头看同一个物体)。这个就是进行视变换的。

再介绍一个函数:

glViewport( ixl, iyb, idx, idy );

调用glViewPort函数来决定视见区域,告诉OpenGL应把渲染之后的图形绘制在窗体的哪个部位。当视见区域是整个窗体时,OpenGL将把渲染结果绘制到整个窗口。这个函数进行视口变换。

マニュアル教える拡張マジック・グラフィックス・エンジニア(パート3)| Yiziyiziは、OpenGLのチュートリアルをノック
这个函数前两个函数是指定视口的左下角位置的,一般为0,0。WindowsGDI中的窗口坐标(0,0)是左上角,而OpenGL所定义的(0,0)是左下角。所以这个函数在这个图中是定义左上角的。后两个参数就是宽度和高度。

这一节结束前再介绍一组有用的函数:

glPushMatrix()和glPopmatirx()

假设我们想要绘制太阳系,中间是太阳,静止不动,地球围绕太阳旋转,月亮围绕地球旋转。

我们首先将坐标系移动到太阳的位置,绘制太阳,再将坐标系移动到地球的位置,绘制地球,然后将坐标系移动到月亮的位置,绘制月亮;如果还有金星、木星、火星呢,他们也都是以太阳为中心旋转,这样子,我们可以绘制完月亮之后再将坐标系回退到绘制地球的时候的坐标系,移动相应的位置,绘制金星,然后再回退或者移动新位置绘制木星。这样的操作不但麻烦,而且容易出错。

どのように保存(glPushMatirx)のスタック上に現在のモデルビュー行列を描画する前に、まず、太陽が座標の原点にあるとき、地球、金星、木星、火星などを描画するために、実際には、最高の地球をそれを行うには、そうしますそれは、(glPopMatrix)を(我々だけで行列を保存した)モデルビュー行列スタックスタック行列を描くポップを終えた後、地球惑星を描くように位置を調整するには、この時間を変換行列スタックには影響しませんそして、元の座標系を復元し、金星を描く、スタックにプッシュし、次に排出されます。

基本的にこの話は終わりです。より多くの我々は、OpenGLの一般的な考えを持っている、といくつかのいくつかのコードも試してみたいです。それは、その後、次の問題は、私はいくつかのサンプルコードを見て、すべてのための私のgithubのを出しますか。

そして最後にそれをスキップ興味、関心を持っていないについては、この話の一部を解放しますが、ご理解で、あなたの学習OpenGLの知識が少しは影響を与えません。

あなただけの、赤、緑、青の色が他の色をオーバーレイがいることを知っているので、glcolorパラメータは、RGBです。保存は、減算によって白いバー様々な色を知らないかもしれません。

マニュアル教える拡張マジック・グラフィックス・エンジニア(パート3)| Yiziyiziは、OpenGLのチュートリアルをノック
パイプライン技術、ラスタライズと呼ばれる言及した用語のフローチャートでは、多くの人が理解できないことがあります。ラスタライズ頂点データは、プロセスをフラグメントに変換されます。各タイル要素は、フレームバッファ内のピクセルに対応します。それでは、どの頂点がそれを断片化する変換しましたか?次の図、あなた自身のために良い英語:

マニュアル教える拡張マジック・グラフィックス・エンジニア(パート3)| Yiziyiziは、OpenGLのチュートリアルをノック
フラグメント処理のために、シェーダの学習の後、あなたはあなた自身のフラグメント処理の多くを行うシェーダによって、より学ぶことができます。

おすすめ

転載: blog.51cto.com/14528075/2437389
おすすめ