日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

OpenGL 矩阵变换

發(fā)布時(shí)間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenGL 矩阵变换 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

origin refer :http://www.songho.ca/opengl/gl_transform.html#modelview

OpenGL 矩陣變換

Related Topics:?OpenGL Pipeline,?OpenGL Projection Matrix,?OpenGL Matrix Class?
Download:?matrixModelView.zip,?matrixProjection.zip

  • Overview
  • OpenGL Transform Matrix
  • Example: GL_MODELVIEW Matrix
  • Example: GL_PROJECTION Matrix

幾何數(shù)據(jù)——如頂點(diǎn)位置,和標(biāo)準(zhǔn)向量(normal vectors),在OpenGL 管道raterization 處理過程之前可通過頂點(diǎn)操作(Vertex Operation)和基本組合操作改變這些數(shù)據(jù)。


Object Coordinates

對(duì)象的本地坐標(biāo)系——任何變換之前的最初位置.為了變換(transformation)這些對(duì)象,可以調(diào)用glRotate(),glTranslatef(),glScalef()這些方法。

增加常用坐標(biāo)系 有助于理解各種坐標(biāo)的關(guān)系《坐標(biāo)系僅表示相對(duì)關(guān)系,與具體名稱無關(guān)》

OpenGL有6種坐標(biāo)系,分別如下:

  • 1,物體或模型坐標(biāo)系(Object or model coordinates);
  • 2,世界坐標(biāo)系(World coordinates)
  • 3,眼坐標(biāo)或相機(jī)坐標(biāo)(Eye (or Camera) coordinates)
  • 4,裁剪坐標(biāo)系(Clip coordinates)
  • 5,標(biāo)準(zhǔn)設(shè)備坐標(biāo)系(Normalized device coordinates)
  • 6,屏幕坐標(biāo)系(Window (or screen) coordinates)?
    除了上面6種外,OpenGL還存在一種假想坐標(biāo)系紋理坐標(biāo)系,這個(gè)坐標(biāo)系是不存在的,它其實(shí)是一系列變換矩陣的結(jié)果,比如它能使頂點(diǎn)從物體或模型坐標(biāo)系變換到世界坐標(biāo)系

從object coordainates到world coordinates再到camera coordinate的變換,在OpenGL中統(tǒng)一稱為model-view轉(zhuǎn)換,初始化的時(shí)候,object coordinates和world coordinates還有camera coordinates坐標(biāo)重合在原點(diǎn),變換矩陣都為Identity,所以在OpenGL中用glLoadIdentity()初始化變換矩陣棧。model-view matix轉(zhuǎn)換points,vectorsd到camera坐標(biāo)系。


Eye Coordinates

使用GL_MODELVIEW矩陣和Object 坐標(biāo)相乘所得。在OpenGL中用GL_MODELVIEW將對(duì)象對(duì)象空間(Object Space)變換到視覺空間(eye space)。GL_MODELVIEW

矩陣是模型矩陣(Model Matrix)和視覺矩陣(View Matrix)的組合?()。其中,Model 變換指的是將Object ?Space轉(zhuǎn)換到World Space

(譯注:World Space值得是OpenGL中的三維空間),而View 變換是將World space變換到eye space。


注意:在OpenGL中沒有單獨(dú)的camera(view) matrix。因此,為了模擬camera或者view的變換,其中的場(chǎng)景(3D物體和光照)必須通過和view相反的方向變換。也就是說,OpenGL總是將camera定義在(0,0,0)點(diǎn),并且強(qiáng)制在eye space坐標(biāo)系的-Z軸方向,而且不能變換。關(guān)于GL_MODELVIEW Matrix的詳細(xì)資料可以查看此處:http://www.songho.ca/opengl/gl_transform.html#modelview


標(biāo)準(zhǔn)向量(Normal vectors)——從對(duì)象坐標(biāo)系(Object coordinates)變換到視覺坐標(biāo)系(eye coordinates),它是用來計(jì)算光照(lighting calculation)的.注意標(biāo)準(zhǔn)向量(Normal vectors)的變換和頂點(diǎn)的不同。其中視覺矩陣(view matrix)是GL_MODELVIEW逆矩陣的轉(zhuǎn)置矩陣和標(biāo)準(zhǔn)向量(Normal vector是)相乘所得,即:


更多關(guān)于標(biāo)準(zhǔn)向量變換(Normal Vector Transformation)的資料可連接到此處:http://www.songho.ca/opengl/gl_normaltransform.htm


剪切面坐標(biāo)系(Clip Coordinates)

視覺坐標(biāo)系和GL_PROJECTION矩陣相乘,得到剪切面坐標(biāo)系。GL_PROJECTION矩陣定義了可視的空間(截頭錐體)(譯注:關(guān)于什么是截頭錐體,我還查了下資料,發(fā)現(xiàn)它是這個(gè)樣子的:


,這個(gè)就是投影的效果啦)以及頂點(diǎn)數(shù)據(jù)如何投影到屏幕上(視角或者正交化(orthogonal)),它被稱為剪切面坐標(biāo)系的原因是(x,y,z)變換之后

要和±w比較。更多關(guān)于GL_PROJECTION矩陣的資料可見:http://www.songho.ca/opengl/gl_transform.html#projection



標(biāo)準(zhǔn)化設(shè)備坐標(biāo)系(NDC)

將剪切面坐標(biāo)系除以w所得(關(guān)于w的討論可見此處:,http://www.songho.ca/math/homogeneous/homogeneous.html),它被稱為視角除法(perspective division)

.它更像是窗口坐標(biāo)系,只是還沒有轉(zhuǎn)換或者縮小到屏幕像素。其中它取值范圍在3個(gè)軸向從-1到1標(biāo)準(zhǔn)化了。




窗口坐標(biāo)系(Window Coordinates)/屏幕坐標(biāo)系(Screen Coordinates)

將標(biāo)準(zhǔn)化設(shè)備坐標(biāo)系(NDC)應(yīng)用于視口轉(zhuǎn)換。NDC將縮小和平移以便適應(yīng)屏幕的透視。窗口坐標(biāo)系最終傳遞給OpenGL的管道處理變成了fragment。glViewPort()函數(shù)

用來定義最終圖片映射的投影區(qū)域。同樣,glDepthRange()用來決定窗口坐標(biāo)系的z坐標(biāo)。窗口坐標(biāo)系由下面兩個(gè)方法給出的參數(shù)計(jì)算出來

glViewPort(x,y,w,h);

glDepthRange(n,f);




視口轉(zhuǎn)換公式很簡(jiǎn)單,通過NDC和窗口坐標(biāo)系的線性關(guān)系得到:



OpenGL 轉(zhuǎn)換矩陣



OpenGL使用4x4矩陣變換。注意,這16個(gè)元素存儲(chǔ)在1D數(shù)組中,這些元素按列順序排列。假如你想以行為順序排列,你需要轉(zhuǎn)置該矩陣。

OpenGL有4中不用的矩陣:GL_MODELVIEW,GL_PROJECTION,GL_TEXTURE和GL_COLOR.你可以在

代碼中使用glMatrixMode()函數(shù)改變當(dāng)前的類型。例如,為了選擇GL_MODELVIEW矩陣,可以這樣:

glMatrixMode(GL_MODELVIEW);


---------------------------------------------------------------------------------------------------------------------------------------------

Model-View 矩陣(GL_MODELVIEW)

GL_MODELVIEW矩陣在一個(gè)矩陣中包含view矩陣和model 矩陣,為了變換view(camera),你需要將整個(gè)

場(chǎng)景施以逆變換。gluLookAt()用來設(shè)置viewing變換。


最右邊的三個(gè)矩陣元素?(m12,?m13,?m14) 是用作位移變換的。m15元素是齊次坐標(biāo)。(何為齊次坐標(biāo),參見:http://www.songho.ca/math/homogeneous/homogeneous.html),該元素是用來投影變換的。

(注意這三個(gè)元素集實(shí)際上指得是3個(gè)正交坐標(biāo)系:

?
4 columns of GL_MODELVIEW matrix

我們能夠不使用OpenGL變換函數(shù),直接構(gòu)造GL_MODELVIEW矩陣。下面有一些有用的代碼構(gòu)建GL_MODELVIEW矩陣

1. Angles to Axes ?

2. Lookat to Axes

3. Matrix4 class

注意,OpenGL在多種變換同時(shí)施加到頂點(diǎn)上時(shí)以相反的順序矩陣相乘。例如,假如一個(gè)頂點(diǎn)先以MA

?x?



投影矩陣Projection Matrix(GL_PROJECTION)

GL_PROJECTION矩陣用來定義截錐體。該截錐體決定了那些對(duì)象或者對(duì)象的哪些部分將會(huì)被裁剪掉。同樣,它也決定著3D場(chǎng)景怎樣投影到屏幕中

(關(guān)于怎樣構(gòu)建投影矩陣,請(qǐng)查看

http://www.songho.ca/opengl/gl_projectionmatrix.html


OpenGL提供2個(gè)函數(shù)用來GL_PROJECTION變換。glFrustum()產(chǎn)生投影視角。glOrtho()產(chǎn)生正交(或者平行)投影。

兩個(gè)函數(shù)都需要6個(gè)參數(shù)決定6個(gè)剪切面:left, right, bottom, top, near, 和far 平面。截錐體的8個(gè)頂點(diǎn)如下所示:

?
OpenGL Perspective Viewing Frustum


遠(yuǎn)端平面(后面)的頂點(diǎn)能夠簡(jiǎn)單地通過相似三角形的比率計(jì)算出來。例如,遠(yuǎn)端平面的左側(cè)可以如下計(jì)算:



對(duì)于正交投影,ratio為1,所以遠(yuǎn)端平面的left,right,bottom和top值都與近端平面的值相同。

、//OpenGL ES中常用到的幾種坐標(biāo)系:世界坐標(biāo)系、物體坐標(biāo)系、設(shè)備坐標(biāo)系、眼坐標(biāo)系當(dāng)然還有假想的紋理坐標(biāo)系

同樣,你也可以使用gluPerspective()和gluOrtho2D()函數(shù),但是傳遞更少的參數(shù)。gluPerspective()只需要4個(gè)參數(shù):視圖的垂直區(qū)域(vertical field of view(FOV)),

width/height的ratio,還有近端平面和遠(yuǎn)端平面的距離。下面代碼使用gluPerspective()和glFrustum()實(shí)現(xiàn)同樣的功能:



OpenGL正交的截錐體

?
OpenGL Orthographic Frustum


然而,假如你想要一個(gè)非對(duì)稱的視覺空間,你可以直接使用glFrustum()。例如,

假如你想要呈現(xiàn)一個(gè)大的場(chǎng)景到2個(gè)相鄰的屏幕,你可以截?cái)嘟劐F體變成2個(gè)不對(duì)稱的截錐體(左和右)。然后,

呈現(xiàn)每個(gè)截錐體場(chǎng)景。

(這句話太不好翻譯了,原位如下:

For example, if you want to render a wide scene into 2 adjoining screens, you can break down the frustum into 2 asymmetric frustums (left and right). Then, render the scene with each frustum.


?
An example of an asymmetric frustum


紋理矩陣(GL_TEXTURE)

紋理坐標(biāo)(s,t,r,q)在任何紋理映射之前乘以GL_TEXTURE矩陣所得,默認(rèn)是恒等的。所以紋理映射到物體的位置將正好是你賦值給紋理坐標(biāo)的位置。

通過改變GL_TEXTURE,你可以滑動(dòng),旋轉(zhuǎn),拉伸或者伸縮紋理。



顏色矩陣(GL_COLOR)

顏色部分是通過乘以GL_COLOR矩陣所得。該矩陣用于顏色空間和顏色組件的變換。(原位如下:It can be used for color space conversion and color component swaping)

顏色矩陣并不是通用的,需要GL_ARB_imaging擴(kuò)展(什么是GL_ARB_imaging擴(kuò)展?求解)


其他矩陣?yán)?/p>

glPushMatrix()——將當(dāng)前的矩陣壓入矩陣棧

glPopMatrix()——從當(dāng)前的矩陣棧中彈出當(dāng)前的矩陣

glLoadIdentity()——設(shè)置當(dāng)前矩陣為等同矩陣

glLoadMatrix{fd}(m)——將當(dāng)前矩陣替換成矩陣m

glLoadTransposeMatrix{fd}(m)——將當(dāng)前矩陣換成其轉(zhuǎn)置矩陣

glMultMatrix{fd}(m)——將當(dāng)前矩陣乘以矩陣m,并且更新當(dāng)前矩陣

glMultTransposeMatrix{fd}(m)——將當(dāng)前矩陣乘以其轉(zhuǎn)置矩陣,并且更新當(dāng)前矩陣

glGetFloatv(GL_MODELVIEW_MATRIX,?m)?——將GL_MODELVIEW矩陣的16個(gè)值加載到m中


例子1:ModelView Matrix



這個(gè)demo應(yīng)用顯示怎樣使用glTranslatef()和glRotatef()操作GL_MODELVIEW

下載鏈接:

matrixModelView.zip: ??

http://www.songho.ca/opengl/files/matrixModelView.zip


(OS X 10.6+) matrixModelView_mac.zip: ??http://www.songho.ca/opengl/files/matrixModelView_mac.zip

注意所有的OpenGL函數(shù)在Mac和Windows下都在ModelGL.h和ModelGL.cpp中實(shí)現(xiàn),在這些包中的這些文件是完全一樣的。


該demo應(yīng)用使用一個(gè)定制的4X4類(鏈接為:http://www.songho.ca/opengl/gl_matrix.html)作為默認(rèn)的OpenGL矩陣?yán)?#xff0c;為了指定model和camera變換.

在ModelGL.cpp中有3中矩陣對(duì)象:matrixModel,matrixView和matrixModelView.每一種矩陣保存著預(yù)先計(jì)算好的變換。然后將這些矩陣元素傳遞給OpenGL的函數(shù)——glLoadMatrix().實(shí)際的畫圖程序應(yīng)該向下面這個(gè)樣子:



使用OpenGL默認(rèn)的矩陣函數(shù),相同的代碼如下:



投影矩陣?yán)?#xff1a;



該 demo應(yīng)用顯示了如何使用glFrustum()和glOrtho()函數(shù)操作投影變換。

源碼和二進(jìn)制文件下載的鏈接:

matrixProjection.zip: ??

http://www.songho.ca/opengl/files/matrixProjection.zip


matrixProjection_mac.zip(OS X 10.6+): ??

http://www.songho.ca/opengl/files/matrixProjection_mac.zip


同樣,ModelGL.h和ModelGL.cpp在兩者的包中有同樣的文件,且所有的OpenGL函數(shù)都置于這些文件中。


ModelGL類有一個(gè)定制的matrix對(duì)象:matrixProjection,兩個(gè)成員函數(shù):setFrustum()和setOrthoFrustum().

其功能與glFrustum()和glOrtho()函數(shù)相同



GL_PROJECTION矩陣構(gòu)建的16個(gè)參數(shù)在這可以看到:



http://www.songho.ca/opengl/gl_projectionmatrix.html

OpenGL Transformation

Related Topics:?OpenGL Pipeline,?OpenGL Projection Matrix,?OpenGL Matrix Class?
Download:?matrixModelView.zip,?matrixProjection.zip

  • Overview
  • OpenGL Transform Matrix
  • Example: GL_MODELVIEW Matrix
  • Example: GL_PROJECTION Matrix

Overview

Geometric data such as vertex positions and normal vectors are transformed via?Vertex Operation?and?Primitive Assembly?operation in?OpenGL pipeline?before raterization process.

?
OpenGL vertex transformation

Object Coordinates

It is the local coordinate system of objects and is initial position and orientation of objects before any transform is applied. In order to transform objects, use glRotatef(), glTranslatef(), glScalef().

Eye Coordinates

It is yielded by multiplying GL_MODELVIEW matrix and object coordinates. Objects are transformed from object space to eye space using GL_MODELVIEW matrix in OpenGL.?GL_MODELVIEW?matrix is a combination of Model and View matrices (). Model transform is to convert from object space to world space. And, View transform is to convert from world space to eye space.

Note that there is no separate camera (view) matrix in OpenGL. Therefore, in order to simulate transforming the camera or view, the scene (3D objects and lights) must be transformed with the inverse of the view transformation. In other words, OpenGL defines that the camera is always located at (0, 0, 0) and facing to -Z axis in the eye space coordinates, and cannot be transformed.?See more details of GL_MODELVIEW matrix inModelView Matrix.

Normal vectors are also transformed from object coordinates to eye coordinates for lighting calculation. Note that normals are transformed in different way as vertices do. It is mutiplying the tranpose of the inverse of GL_MODELVIEW matrix by a normal vector.?See more details in?Normal Vector Transformation.?

Clip Coordinates

The eye coordinates are now multiplied with?GL_PROJECTION?matrix, and become the clip coordinates. This GL_PROJECTION matrix defines the viewing volume (frustum); how the vertex data are projected onto the screen (perspective or orthogonal). The reason it is called?clip coordinates?is that the transformed vertex (x, y, z) is clipped by comparing with ±w.?
See more details of GL_PROJECTION matrix in?Projection Matrix.

Normalized Device Coordinates (NDC)

It is yielded by dividing the clip coordinates by?w. It is called?perspective division. It is more like window (screen) coordinates, but has not been translated and scaled to screen pixels yet. The range of values is now normalized from -1 to 1 in all 3 axes.

Window Coordinates (Screen Coordinates)

It is yielded by applying normalized device coordinates (NDC) to viewport transformation. The NDC are scaled and translated in order to fit into the rendering screen. The window coordinates finally are passed to the raterization process of?OpenGL pipeline?to become a fragment.?glViewport()?command is used to define the rectangle of the rendering area where the final image is mapped. And,?glDepthRange()?is used to determine the?z?value of the window coordinates. The window coordinates are computed with the given parameters of the above 2 functions;?
glViewport(x, y, w, h);?
glDepthRange(n, f);

The viewport transform formula is simply acquired by the linear relationship between NDC and the window coordinates;?

OpenGL Transformation Matrix

?
OpenGL Transform Matrix

OpenGL uses?4 x 4 matrix?for transformations. Notice that 16 elements in the matrix are stored as 1D array in column-major order. You need to transpose this matrix if you want to convert it to the standard convention, row-major format.

OpenGL has 4 different types of matrices;?GL_MODELVIEW,?GL_PROJECTION,?GL_TEXTURE, and?GL_COLOR. You can switch the current type by using?glMatrixMode()?in your code. For example, in order to select GL_MODELVIEW matrix, use?glMatrixMode(GL_MODELVIEW).


Model-View Matrix (GL_MODELVIEW)

GL_MODELVIEW matrix combines viewing matrix and modeling matrix into one matrix. In order to transform the view (camera), you need to move whole scene with the inverse transformation.?gluLookAt()?is particularly used to set viewing transform.

?
4 columns of GL_MODELVIEW matrix

The 3 matrix elements of the rightmost column (m12,?m13,?m14) are for the translation transformation,?glTranslatef(). The element?m15?is the?homogeneous coordinate. It is specially used for projective transformation.

3 elements sets, (m0,?m1,?m2), (m4,?m5,?m6) and (m8,?m9,?m10) are for Euclidean and affine transformation, such as rotation?glRotatef()?or scaling?glScalef(). Note that these 3 sets are actually representing 3 orthogonal axes;

  • (m0,?m1,?m2) ??: +X axis,?left?vector, (1, 0, 0) by default
  • (m4,?m5,?m6) ??: +Y axis,?up?vector, (0, 1, 0) by default
  • (m8,?m9,?m10) : +Z axis,?forward?vector, (0, 0, 1) by default

We can directly construct GL_MODELVIEW matrix from angles or lookat vector without using OpenGL transform functions. Here are some useful codes to build GL_MODELVIEW matrix:

  • Angles to Axes
  • Lookat to Axes
  • Matrix4 class

Note that OpenGL performs matrices multiplications in reverse order if multiple transforms are applied to a vertex. For example, If a vertex is transformed by?MA?first, and transformed by?MB?second, then OpenGL performs?MB?x?MA?first before multiplying the vertex. So, the last transform comes first and the first transform occurs last in your code.?


// Note that the object will be translated first then rotated
glRotatef(angle, 1, 0, 0);   // rotate object angle degree around X-axis
glTranslatef(x, y, z);       // move object to (x, y, z)
drawObject();

Projection Matrix (GL_PROJECTION)

GL_PROJECTION matrix is used to define the frustum. This frustum determines which objects or portions of objects will be clipped out. Also, it determines how the 3D scene is projected onto the screen.?(Please see more details?how to construct the projection matrix.)

OpenGL provides 2 functions for GL_PROJECTION transformation.?glFrustum()?is to produce a perspective projection, and?glOrtho()?is to produce a orthographic (parallel) projection. Both functions require 6 parameters to specify 6 clipping planes;?left,?right,?bottom,?top,?near?and?far?planes. 8 vertices of the viewing frustum are shown in the following image.

?
OpenGL Perspective Viewing Frustum

The vertices of the far (back) plane can be simply calculated by the ratio of similar triangles, for example, the left of the far plane is;?

?
OpenGL Orthographic Frustum

For orthographic projection, this ratio will be 1, so the?left,?right,?bottom?and?top?values of the far plane will be same as on the near plane.

You may also use gluPerspective() and gluOrtho2D() functions with less number of parameters.?gluPerspective()?requires only 4 parameters; vertical field of view (FOV), the aspect ratio of width to height and the distances to near and far clipping planes. The equivalent conversion from gluPerspective() to glFrustum() is described in the following code.


// This creates a symmetric frustum.
// It converts to 6 params (l, r, b, t, n, f) for glFrustum()
// from given 4 params (fovy, aspect, near, far)
void makeFrustum(double fovY, double aspectRatio, double front, double back)
{const double DEG2RAD = 3.14159265 / 180;double tangent = tan(fovY/2 * DEG2RAD);   // tangent of half fovYdouble height = front * tangent;          // half height of near planedouble width = height * aspectRatio;      // half width of near plane// params: left, right, bottom, top, near, farglFrustum(-width, width, -height, height, front, back);
}
?
An example of an asymmetric frustum

However, you have to use glFrustum() directly if you need to create a non-symmetrical viewing volume. For example, if you want to render a wide scene into 2 adjoining screens, you can break down the frustum into 2 asymmetric frustums (left and right). Then, render the scene with each frustum.

Texture Matrix (GL_TEXTURE)

Texture coordinates (s,?t,?r,?q) are multiplied by GL_TEXTURE matrix before any texture mapping. By default it is the identity, so texture will be mapped to objects exactly where you assigned the texture coordinates. By modifying GL_TEXTURE, you can slide, rotate, stretch, and shrink the texture.


// rotate texture around X-axis
glMatrixMode(GL_TEXTURE);
glRotatef(angle, 1, 0, 0);

Color Matrix (GL_COLOR)

The color components (r,?g,?b,?a) are multiplied by GL_COLOR matrix. It can be used for color space conversion and color component swaping. GL_COLOR matrix is not commonly used and is required?GL_ARB_imagingextension.

Other Matrix Routines

glPushMatrix()?:?push the current matrix into the current matrix stack.glPopMatrix()?:?pop the current matrix from the current matrix stack.glLoadIdentity()?:?set the current matrix to the identity matrix.glLoadMatrix{fd}(m)?:?replace the current matrix with the matrix?m.glLoadTransposeMatrix{fd}(m)?:?replace the current matrix with the row-major ordered matrix?m.glMultMatrix{fd}(m)?:?multiply the current matrix by the matrix?m, and update the result to the current matrix.glMultTransposeMatrix{fd}(m)?:?multiply the current matrix by the row-major ordered matrix?m, and update the result to the current matrix.glGetFloatv(GL_MODELVIEW_MATRIX,?m)?:?return 16 values of GL_MODELVIEW matrix to?m.

?

Example: ModelView Matrix

This demo application shows how to manipulate GL_MODELVIEW matrix by translation and rotation transforms.

Download the source and binary:?
(Updated: 2018-04-16)

matrixModelView.zip?(include VS 2015 project)?
matrixModelView_mac.zip?(macOS 10.10+, include Xcode v9)

Note that all OpenGL function calls are implemented in?ModelGL.h?and?ModelGL.cpp?on both Mac and Windows versions, and these files are?identical?on both packages (platform independent).

This demo application uses?a custom 4x4 matrix class?as well as default OpenGL matrix routines in order to specify model and camera transforms. There are 3 of matrix objects defined in ModelGL.cpp; matrixModel, matrixView and matrixModelView. Each matrix stores the pre-computed transformation and passes the matrix elements to OpenGL by using?glLoadMatrixf(). The actual drawing routine looks like;


...
glPushMatrix();// set view matrix for camera transform
glLoadMatrixf(matrixView.get());// draw the grid at origin before model transform
drawGrid();// set modelview matrix for both model and view transform
// It transforms from object space to eye space.
glLoadMatrixf(matrixModelView.get());// draw a teapot after both view and model transforms
drawTeapot();glPopMatrix();
...

The equivalent code using default OpenGL matrix functions is;


...
glPushMatrix();// initialze ModelView matrix
glLoadIdentity();// First, transform the camera (viewing matrix) from world space to eye space
// Notice translation and heading values are negated,
// because we move the whole scene with the inverse of camera transform
// ORDER: translation -> roll -> heading -> pitch
glRotatef(cameraAngle[2], 0, 0, 1);  // roll
glRotatef(-cameraAngle[1], 0, 1, 0); // heading
glRotatef(cameraAngle[0], 1, 0, 0);  // pitch
glTranslatef(-cameraPosition[0], -cameraPosition[1], -cameraPosition[2]);// draw the grid at origin before model transform
drawGrid();// transform the object (model matrix)
// The result of GL_MODELVIEW matrix will be:
// ModelView_M = View_M * Model_M
// ORDER: rotZ -> rotY -> rotX -> translation
glTranslatef(modelPosition[0], modelPosition[1], modelPosition[2]);
glRotatef(modelAngle[0], 1, 0, 0);
glRotatef(modelAngle[1], 0, 1, 0);
glRotatef(modelAngle[2], 0, 0, 1);// draw a teapot with model and view transform together
drawTeapot();glPopMatrix();
...

Example: Projection Matrix

This demo application is to show how to manipulate the projection transformation with 6 parameters; left, right, bottom, top, near and far values.

Download the source and binary:?
(Updated: 2017-03-15)

matrixProjection.zip?(include VS 2015 project)?
matrixProjection_mac.zip?(macOS 10.10+, include Xcode v9)

Again,?ModelGL.h?and?ModelGL.cpp?are exactly same files on both packages (platform independent), and all OpenGL function calls are placed in these files.

ModelGL class has?a custom matrix object,?matrixProjection, and 2 member functions,?setFrustum()?and?setOrthoFrustum(), which are equivalent to?glFrustum()?and?glOrtho().


///
// return a perspective frustum with 6 params similar to glFrustum()
// (left, right, bottom, top, near, far)
///
Matrix4 ModelGL::setFrustum(float l, float r, float b, float t, float n, float f)
{Matrix4 matrix;matrix[0]  =  2 * n / (r - l);matrix[5]  =  2 * n / (t - b);matrix[8]  =  (r + l) / (r - l);matrix[9]  =  (t + b) / (t - b);matrix[10] = -(f + n) / (f - n);matrix[11] = -1;matrix[14] = -(2 * f * n) / (f - n);matrix[15] =  0;return matrix;
}///
// return a symmetric perspective frustum with 4 params similar to
// gluPerspective() (vertical field of view, aspect ratio, near, far)
///
Matrix4 ModelGL::setFrustum(float fovY, float aspectRatio, float front, float back)
{float tangent = tanf(fovY/2 * DEG2RAD);   // tangent of half fovYfloat height = front * tangent;           // half height of near planefloat width = height * aspectRatio;       // half width of near plane// params: left, right, bottom, top, near, farreturn setFrustum(-width, width, -height, height, front, back);
}///
// set a orthographic frustum with 6 params similar to glOrtho()
// (left, right, bottom, top, near, far)
///
Matrix4 ModelGL::setOrthoFrustum(float l, float r, float b, float t, float n, float f)
{Matrix4 matrix;matrix[0]  =  2 / (r - l);matrix[5]  =  2 / (t - b);matrix[10] = -2 / (f - n);matrix[12] = -(r + l) / (r - l);matrix[13] = -(t + b) / (t - b);matrix[14] = -(f + n) / (f - n);return matrix;
}
...// how to pass projection matrx to OpenGL
Matrix4 projectionMatrix = setFrustum(l, r, b, t, n, f);
glMatrixMode(GL_PROJECTION);
glLoadMatrixf(matrixProjection.get());
...

Constructing 16 elements of GL_PROJECTION matrix is explained?here.

總結(jié)

以上是生活随笔為你收集整理的OpenGL 矩阵变换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

久久久国产精品亚洲一区 | 天天操欧美 | www成人av| 成 人 黄 色 视频 免费观看 | 91在线精品播放 | 久久av免费电影 | 久草免费在线视频观看 | 精品欧美乱码久久久久久 | 日韩特黄av | 久久久电影网站 | 亚洲一区美女视频在线观看免费 | 黄污污网站 | 亚洲精品日韩一区二区电影 | 91精品办公室少妇高潮对白 | 91精彩视频 | 国产精品久久久久三级 | 激情综合网色播五月 | 国产精品永久 | 午夜久久影视 | 欧美最猛性xxxxx(亚洲精品) | 天天摸天天干天天操天天射 | 久久精品国产精品亚洲 | av片在线观看 | 国产精品久久久久久久99 | 亚洲 中文 在线 精品 | 国产一区二区高清 | 国产免费中文字幕 | 欧美男女爱爱视频 | 国产黄色大片 | 99久久精品久久久久久动态片 | 麻豆视频国产在线观看 | 亚洲电影久久久 | www久久国产 | 五月婷婷在线观看 | 久久亚洲热 | 国产精品一区二区三区在线免费观看 | 亚洲视频观看 | 精品久久久久久亚洲综合网 | av中文字幕在线观看网站 | 91精品久久久久久粉嫩 | 久草久| 日韩一区二区三区免费电影 | 999毛片| 在线成人av | 日韩中文字幕免费看 | 天天操天天添 | av电影 一区二区 | 大荫蒂欧美视频另类xxxx | 国内精品视频一区二区三区八戒 | 国产精品久久久久久久免费观看 | 人人玩人人爽 | av观看在线观看 | 999久久久国产精品 高清av免费观看 | 欧美美女视频在线观看 | 日p视频| 国产在线最新 | 国产精品久久久久久久免费观看 | 亚洲午夜久久久久久久久久久 | 亚洲成a人片77777潘金莲 | 中文字幕一区二区在线观看 | 国产精品视频app | 久久久 激情 | 日韩高清成人在线 | 免费国产一区二区视频 | 五月激情六月丁香 | 日本在线中文在线 | 亚洲综合射 | 日韩精品一区二区三区三炮视频 | 国产高清成人av | 超碰官网| 在线观看免费视频你懂的 | 免费成视频 | 久久久久免费精品国产 | 国产免费嫩草影院 | 人人爽人人爽人人片av免 | 超碰在线观看av.com | 五月丁婷婷| 久久精品人人做人人综合老师 | 一区精品久久 | 亚洲精品国产综合99久久夜夜嗨 | 国产一区二区精品久久91 | 国产亚洲日 | 色婷婷久久 | 一区二区男女 | 国产资源在线观看 | 天天爽人人爽夜夜爽 | 中文字幕免费高清在线 | 精品国产理论片 | 久久伦理网| 国产精品美女999 | 人人干网站 | 国产伦精品一区二区三区… | av午夜电影| 一区二区三区在线免费 | 久久综合久久综合九色 | 精品国产人成亚洲区 | 国产精品久久久久久久久久不蜜月 | 黄色软件在线看 | 在线一二三四区 | 国产欧美精品xxxx另类 | 日日摸日日 | 国产麻豆精品久久一二三 | 91av免费观看 | 日韩中文字幕一区 | 婷婷av网| 久久精品一区二区三区中文字幕 | 久久国产精品久久精品 | 国产在线美女 | 欧美一级免费片 | 91人人澡人人爽 | 亚洲精品乱码久久久久久 | 九九久久婷婷 | 天天射天天射天天 | 亚洲国产天堂av | 久久av电影 | 99re热精品视频 | 在线观看中文字幕网站 | 夜夜夜影院 | 九精品 | 日韩视频一区二区三区在线播放免费观看 | 欧美日韩一区二区三区不卡 | av黄色免费网站 | 日韩精品中文字幕久久臀 | 91亚色视频| 精品福利网 | 日本精品中文字幕在线观看 | 日韩精品一区二区免费 | 视频一区久久 | 99久久婷婷国产 | 亚洲一级黄色片 | 天天操天天舔天天干 | 亚洲最大的av网站 | 国产精品自在欧美一区 | 91精品入口 | 中文av资源站| 操操操日日日干干干 | 午夜免费福利片 | 久久综合操 | 日本在线成人 | 久久国产女人 | 国产999精品久久久影片官网 | 日韩精品 在线视频 | 成年人免费在线观看网站 | 日韩欧美高清一区二区三区 | 日韩av看片 | 九九久久久 | 国产精品欧美久久久久天天影视 | 精品国产欧美一区二区 | 国产一区二区三区四区在线 | 69国产在线观看 | 欧美专区国产专区 | 亚洲高清在线观看视频 | 99视频国产在线 | 亚洲欧洲国产精品 | 国产在线最新 | 日韩免费看片 | 国产精品a级 | 日韩欧美区 | 国产1级毛片 | 青青色影院 | 嫩草av影院 | 91精品黄色 | 天堂中文在线播放 | 亚洲精品在线视频网站 | 欧美精品一区在线发布 | 国产资源在线免费观看 | 又色又爽又黄高潮的免费视频 | 成人久久18免费网站图片 | www五月天| 亚洲精品国产高清 | www.久久91| 成人黄色毛片视频 | 久久久久久久久久久网 | 日韩在线观看一区二区三区 | 91入口在线观看 | 国产999精品久久久久久绿帽 | 一区二区精品在线观看 | 在线免费观看视频一区二区三区 | 国产免费国产 | 成人精品久久久 | 开心色婷婷 | 天天操天天干天天爽 | 欧美一级性生活片 | 亚洲精品国产电影 | 在线国产不卡 | 99r精品视频在线观看 | 国产综合91 | 国产黄色精品在线观看 | 中文字幕在线播放视频 | 欧美不卡视频在线 | 日日婷婷夜日日天干 | 亚洲一区二区三区毛片 | 免费网址在线播放 | 91麻豆操| 成人在线网站观看 | 免费av影视 | 99视频免费在线观看 | 欧美成人在线免费观看 | 精品久久久久久久久亚洲 | 日韩欧美黄色网址 | 欧美日韩精品区 | 在线观看日韩一区 | 精品久久久久国产 | 日女人电影 | 免费视频色 | 天天综合视频在线观看 | 天天舔天天射天天操 | 久久国产免费视频 | 在线免费观看的av网站 | 久久久久久久久久久综合 | 亚洲欧洲国产精品 | www.人人干| 一区二区三区免费在线观看 | 国产无遮挡又黄又爽馒头漫画 | 麻豆免费视频 | 婷婷激情欧美 | 黄色免费观看网址 | 国产三级香港三韩国三级 | 香蕉视频网站在线观看 | 热久久在线视频 | 97精品国产97久久久久久春色 | 日韩精品中文字幕一区二区 | 二区三区在线观看 | 999精品视频 | 午夜资源站| 欧美老女人xx | 久久深爱网 | 国产一区二区不卡视频 | 91在线成人 | 日韩在线观看一区二区三区 | 在线播放国产一区二区三区 | 国产一区免费看 | 精品久久亚洲 | 99久久精品一区二区成人 | 精品久久亚洲 | 国产精品午夜久久久久久99热 | 日日夜夜天天综合 | 中文字幕精 | 日韩午夜小视频 | 久久av中文字幕片 | 国产三级精品三级在线观看 | 午夜999 | 一区久久久 | 中文字幕中文 | 成人国产精品一区 | 中文字幕亚洲精品日韩 | 国产一级片在线播放 | 欧美日韩精品网站 | 激情久久久久久久久久久久久久久久 | 激情欧美丁香 | 日韩在线看片 | 亚洲黄色免费 | 亚洲精品影院在线观看 | 福利视频 | a级片在线播放 | 欧美日韩一区二区三区免费视频 | 天天射狠狠干 | 免费a网 | 成人永久免费 | 精品国产成人在线 | 91传媒视频在线观看 | 99re热精品视频 | 在线视频一区观看 | 国产精品久久精品 | 久久精品高清视频 | 国产成人精品999在线观看 | 特级a毛片 | 精品产品国产在线不卡 | 人人揉人人揉人人揉人人揉97 | 麻豆视频在线观看免费 | 狠狠色狠狠色综合日日92 | 久久婷婷综合激情 | 91视频免费网站 | 日韩精品综合在线 | 国产r级在线观看 | 天堂av一区二区 | 探花视频免费观看高清视频 | 亚洲第一区在线观看 | 国产免码va在线观看免费 | 国产精品欧美日韩 | av电影一区 | 99 精品 在线| 日韩av影片在线观看 | 久久第四色 | 国产又黄又猛又粗 | 色激情五月 | 国产色在线观看 | 久久精品香蕉 | 美女免费视频观看网站 | 成人福利在线观看 | 99久久精品国产亚洲 | 在线三级中文 | 国产又粗又猛又爽又黄的视频免费 | 亚洲一区二区三区四区精品 | 手机色在线 | 亚洲成人av电影 | 97自拍超碰 | 在线国产福利 | 91xav| 高清不卡一区二区三区 | 久久国产精品电影 | 久久99精品久久久久久秒播蜜臀 | 国产免费中文字幕 | 成人免费在线观看电影 | 亚洲综合网站在线观看 | 久久久网| 亚洲91网站 | 久久久久久久毛片 | 一级黄色片在线播放 | av免费播放 | 亚洲码国产日韩欧美高潮在线播放 | 久久精品伊人 | 日本精品一 | 中文字幕中文字幕在线中文字幕三区 | 久久成人午夜 | 一区二区三区在线免费播放 | 欧美小视频在线 | 亚洲国产精品小视频 | 久久综合九色综合久久久精品综合 | 国产 精品 资源 | 中文字幕av日韩 | 国产精品免费观看在线 | 午夜少妇一区二区三区 | 91理论电影| 久久国产精品一区二区 | 天天色天天综合 | 黄色av一级片 | 国产精品一区在线观看 | 久久伦理网 | 国产精品入口a级 | 96精品在线 | 一本色道久久综合亚洲二区三区 | 91在线porny国产在线看 | 欧美二区三区91 | 又紧又大又爽精品一区二区 | 99久久夜色精品国产亚洲 | 91视频在线观看免费 | 二区精品视频 | 国产精品人人做人人爽人人添 | 91精品一区国产高清在线gif | 国产精品一区二区在线观看免费 | 国产电影黄色av | 精品在线99 | 视频福利在线观看 | 不卡中文字幕在线 | 99久久久久国产精品免费 | 亚洲在线免费视频 | 这里只有精彩视频 | 久久久高清视频 | 中文字幕在线观看三区 | 成 人 a v天堂 | 国产精品专区h在线观看 | 中文字幕在线一二 | 正在播放国产精品 | 国产精品一区二区吃奶在线观看 | 国产福利精品视频 | 国内精品视频一区二区三区八戒 | 国产在线播放一区 | 亚洲精品久久激情国产片 | 五月天网站在线 | 亚洲免费av电影 | 中文字幕日韩一区二区三区不卡 | 久久久精品网站 | 国产视频18| 日日操操 | 亚州精品在线视频 | 91福利免费 | 中文字幕日韩电影 | 欧美一级xxxx | 91在线观 | 国产福利专区 | 一区二区视频在线看 | 天天干,夜夜爽 | 四虎免费在线观看视频 | 欧美精品免费一区二区 | 玖玖视频国产 | 欧美日韩不卡一区二区 | 亚洲精品乱码久久久久久蜜桃91 | 女人18片毛片90分钟 | 日本中文字幕免费观看 | 成人av资源站 | 国产免费一区二区三区最新 | 色天天综合久久久久综合片 | 超碰在线99 | 国产三级av在线 | 国产 色 | 久久激情片 | 国产免费观看久久黄 | 黄色成人av网址 | 蜜桃视频在线视频 | 日韩在线视频免费看 | 免费91在线 | 又湿又紧又大又爽a视频国产 | 婷婷综合av| 91超碰免费在线 | 亚洲夜夜网| 精品国产一区二区三区日日嗨 | 国产精品久久久久久久久久了 | 在线日韩av | 亚洲电影久久 | 在线综合 亚洲 欧美在线视频 | 国产色黄网站 | 中文国产在线观看 | 最新的av网站 | 日韩久久在线 | 国产高清免费av | 日韩高清一区在线 | 久草资源在线观看 | 在线小视频你懂的 | 久久久久在线视频 | 中文字幕乱在线伦视频中文字幕乱码在线 | 美女网站黄在线观看 | 久久爱资源网 | 国产成人黄色片 | 欧美一级专区免费大片 | 成人欧美一区二区三区在线观看 | 草莓视频在线观看免费观看 | 婷五月天激情 | 91精品久| 99久久精品国产一区二区成人 | 欧美性免费 | 奇米先锋| 婷婷.com| 成年人视频在线免费 | 六月丁香激情网 | 午夜久久视频 | 国产精品免费视频久久久 | 日韩久久久 | 国产成人黄色av | 在线视频日韩欧美 | 在线视频日韩欧美 | 久久久国产一区 | 国产精品久久久999 国产91九色视频 | 91精品一区二区三区蜜桃 | 超级av在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲电影一区二区 | 四虎影视国产精品免费久久 | 国产成人a亚洲精品 | av福利在线播放 | 91日韩在线播放 | 国产精品视频内 | 在线观看视频三级 | 色中色资源站 | 欧美精品做受xxx性少妇 | 婷婷在线视频 | 亚洲a资源| 四虎8848免费高清在线观看 | 精品不卡av | 中文字幕一区二 | 国产美女被啪进深处喷白浆视频 | 亚洲国产精品小视频 | 日韩欧美精品在线 | 亚洲精品免费在线观看 | 久久精品99| a国产精品 | 免费a网站 | 成年人看片 | 五月婷丁香 | 九九99视频 | 狠狠色伊人亚洲综合网站色 | 最新中文字幕在线播放 | 成人黄色免费观看 | 91在线看视频免费 | 日韩在线免费视频观看 | 97精品免费视频 | 免费在线观看视频一区 | 中文字幕色在线视频 | 亚洲三级在线 | 成人午夜剧场在线观看 | 五月婷婷久草 | 国产九九精品视频 | 高清不卡毛片 | 超碰人人99 | 国产在线国偷精品产拍免费yy | 国产 中文 日韩 欧美 | 亚洲视频在线观看 | 一区二区三区久久精品 | 永久免费精品视频 | av在线电影免费观看 | 色婷婷综合视频在线观看 | 欧美一级看片 | 69精品人人人人 | 久久精品精品电影网 | 黄色av一区二区 | 久久久福利影院 | 亚洲午夜久久久久久久久久久 | 婷婷av电影| 亚洲视频网站在线观看 | 92国产精品久久久久首页 | 在线免费色 | 国产区精品区 | 在线观看你懂的网站 | 亚洲色综合 | 婷婷综合久久 | 久久国产精品99国产精 | 日本特黄特色aaa大片免费 | 免费看日韩片 | 亚洲电影久久久 | 激情五月***国产精品 | 日韩v在线 | 综合久久久久久久久 | 91精品久久久久久综合乱菊 | 精品黄色视 | 91cn国产在线 | 中文字幕91在线 | 人人人爽 | 久久久一本精品99久久精品 | 国产精品日韩在线 | 99久久99久久精品国产片果冰 | 国产偷国产偷亚洲清高 | 久久精品一区二区三区视频 | 69亚洲乱| 97超碰在线久草超碰在线观看 | 国产麻豆电影在线观看 | 综合网欧美 | 91视视频在线直接观看在线看网页在线看 | 最新国产精品久久精品 | 四虎成人精品 | 亚洲区色 | 欧美日韩国产综合一区二区 | 日韩三级成人 | 免费看片成人 | 麻豆视频观看 | 国产一级一片免费播放放 | 国产黄色精品在线 | 国产午夜精品久久久久久久久久 | 欧美精品中文字幕亚洲专区 | 国产精品中文字幕在线播放 | 黄色免费网站大全 | 97超碰国产精品女人人人爽 | 夜夜操天天干 | 亚洲视频 视频在线 | 99久久久久久久 | 三级av在线| 午夜精品久久久99热福利 | 亚洲激情电影在线 | 亚洲a色 | 欧美夫妻性生活电影 | 99在线精品观看 | av免费网站在线观看 | 人人爱爱 | 国产福利在线免费 | 国产成人精品一区二区三区 | 久久99久久99精品免观看粉嫩 | 一区二区三区在线视频111 | 成人午夜电影在线 | 国产 日韩 中文字幕 | 精品视频成人 | 日韩精品极品视频 | 欧美黑吊大战白妞欧美 | 麻豆一区二区 | 九九九九精品九九九九 | 91丨九色丨高潮丰满 | 五月开心婷婷网 | 欧美一级xxxx | 国产一区二区不卡视频 | 色噜噜色噜噜 | 国产成人av网 | 国产不卡在线播放 | 久久久久在线 | 成人资源在线播放 | 国产麻豆剧传媒免费观看 | 成人影视免费 | 国产精品理论在线观看 | 色婷婷播放 | 天天操天天干天天操天天干 | 久久草草热国产精品直播 | 国产成人免费网站 | 亚洲资源视频 | 国产精品久久久区三区天天噜 | 久久国产精品系列 | 九九国产视频 | 九九热免费在线观看 | 国产你懂的在线 | 99视屏| 精品久久久国产 | 日本精品在线 | 国产一级免费在线 | 久久久精品日本 | 91麻豆精品国产91久久久使用方法 | www免费看| 黄色字幕网| 午夜影视av | 久久综合网色—综合色88 | 一区视频在线 | 在线观看韩日电影免费 | 日韩色一区二区三区 | 久久久久亚洲最大xxxx | 视频成人永久免费视频 | av免费成人| 久久影院中文字幕 | 久久久国产影院 | 免费观看国产精品视频 | 天天干.com | 亚洲精品国偷拍自产在线观看蜜桃 | 人人艹人人 | 日韩一区二区免费在线观看 | 日韩一区二区三免费高清在线观看 | 成人h动漫在线看 | 日韩3区 | 摸bbb搡bbb搡bbbb | 超碰在线最新网址 | 最新国产在线 | 久久国产热 | 精品亚洲va在线va天堂资源站 | 在线观看资源 | 国产综合精品久久 | 亚洲手机天堂 | 色综合天天综合网国产成人网 | 啪一啪在线 | 国产第一福利 | 久久久久久不卡 | 91插插插免费视频 | 四虎国产精品免费观看视频优播 | 国产精品久久久久久久7电影 | 欧美aa在线观看 | 精品国产一区二 | 国产精品久久久久久久久久ktv | 免费 在线 中文 日本 | 久久人操 | 在线免费91 | 在线精品视频在线观看高清 | 久草www| 久久精品视频99 | 午夜三级福利 | 伊人手机在线 | 日韩素人在线观看 | 黄色一级免费电影 | 久久久久亚洲精品国产 | 亚洲视频资源在线 | 久久久久久久久久久精 | 亚洲理论在线 | 午夜电影 电影 | 日韩字幕在线观看 | 久久久久久久久久毛片 | 日本久久久久久科技有限公司 | 91精品视频免费看 | 欧美性生交大片免网 | 久久99国产精品自在自在app | 国产福利精品一区二区 | 黄色毛片大全 | av手机在线播放 | 日本中文字幕在线播放 | 四川妇女搡bbbb搡bbbb搡 | 免费在线观看不卡av | 中文字幕 国产 一区 | 九九久久久久久久久激情 | 91在线视频观看免费 | 丝袜足交在线 | 伊人国产在线播放 | 综合久久网 | 99在线免费观看视频 | 国产精品女 | 96视频免费在线观看 | 天天精品视频 | 天天天在线综合网 | 欧美日韩1区2区 | 91成人在线视频观看 | 99精品在线看 | 天天做日日做天天爽视频免费 | 日日操夜夜操狠狠操 | 91中文字幕 | 免费看成人片 | 婷婷久久综合九色综合 | 99精品视频免费在线观看 | 97免费在线观看视频 | 欧美日韩一区二区三区在线免费观看 | 激情电影在线观看 | 国产精品综合在线观看 | 99色视频| 午夜体验区 | 久草热视频| 久久久av电影 | 99精品热| 97视频人人澡人人爽 | 三级黄色欧美 | 国产精品毛片一区二区在线看 | 一区二区三区动漫 | 精品国产亚洲一区二区麻豆 | 亚洲精品视频中文字幕 | 成人精品视频久久久久 | av中文国产 | 亚洲精品高清在线 | 中文字幕一区二区三区四区 | 91最新地址永久入口 | 色悠悠久久综合 | 丁香5月婷婷 | 欧美另类xxx| 久久草草热国产精品直播 | 91精品视频在线免费观看 | 国产精品精 | 在线观看aaa| 亚洲国产69 | 91高清免费看 | 夜夜躁日日躁狠狠久久av | 亚洲精品自拍视频在线观看 | 亚洲精品视频在线免费播放 | 五月婷婷激情综合网 | 欧美精品在线观看免费 | 91免费观看视频网站 | 视频国产| 麻豆传媒在线视频 | 黄色日批网站 | 色综久久| 欧美日韩在线观看一区二区 | 美女国内精品自产拍在线播放 | 日韩精品久久久久久中文字幕8 | 女人18毛片90分钟 | 午夜影视剧场 | 国产福利一区二区三区视频 | 欧美另类高清 | 在线观看岛国 | 人人爽人人爱 | 久久久久一区二区三区 | 综合色狠狠 | 欧美aa一级| 日韩精品视频一二三 | 日韩极品视频在线观看 | 亚洲精品中文字幕在线 | 一区二区欧美日韩 | 久久久久久久久影视 | 中文字幕大全 | 国产麻豆精品免费视频 | 亚洲一级黄色片 | 天天综合色天天综合 | 国产系列 在线观看 | 免费黄色看片 | 亚洲精品国产第一综合99久久 | 国产日韩视频在线观看 | 在线观看免费视频你懂的 | 久久黄色网 | 亚洲男男gaygay无套 | 亚洲三级在线免费观看 | 日本xxxx裸体xxxx17 | 麻豆超碰| 免费看污片 | 国产精品第一页在线 | 国产精品久久久久久久久费观看 | 欧美日韩精品在线观看视频 | 国产精品久久在线 | 久久国产精品99久久久久 | 国产精品视频全国免费观看 | 中文资源在线官网 | 精品一区二区日韩 | 亚洲天堂网在线视频观看 | 中文字幕在线视频第一页 | av福利在线 | 成人动漫精品一区二区 | 狠狠色丁香久久婷婷综合五月 | 国产一区不卡在线 | 亚洲国内精品在线 | 久久久久成人精品免费播放动漫 | 天天草天天干天天射 | 波多野结衣在线中文字幕 | 二区中文字幕 | 久久深夜 | 日韩电影在线观看一区二区 | 久久综合在线 | 午夜天使 | 国产免费视频在线 | 亚洲午夜av电影 | 亚洲最新av在线网站 | 日韩精品一区二区三区中文字幕 | 天堂在线视频中文网 | 日日摸日日添夜夜爽97 | 国产一级二级三级在线观看 | 亚洲 欧洲 国产 精品 | 亚洲精品综合欧美二区变态 | 91高清视频在线 | 国产精品久久久久一区二区三区 | 久久免费视频99 | 国产成人精品电影久久久 | 天天色天天爱天天射综合 | 久久久91精品国产一区二区精品 | 91av电影在线观看 | 天堂在线一区二区三区 | 免费看的黄色的网站 | 激情视频在线观看网址 | 亚洲黄色一级视频 | 亚洲天堂网在线视频观看 | 国产精品久久久久亚洲影视 | 精品免费久久 | 狠狠干激情 | 国产aa精品 | 国内一级片在线观看 | 久久午夜羞羞影院 | 日本天天色| 日本中文字幕系列 | 最新中文字幕视频 | 国产午夜精品久久 | 91色网址 | 97涩涩视频 | 深爱激情综合网 | 九九九九精品九九九九 | 国产精品国产三级在线专区 | 国产精品自拍在线 | 国产精品久久久久久久久久新婚 | 爱色婷婷| 天天干天天操天天搞 | 欧美亚洲另类在线视频 | 欧美日韩国产一区二区三区在线观看 | av日韩国产 | 久久爱影视i | 欧美日本不卡高清 | 日韩在线视频观看免费 | 91一区啪爱嗯打偷拍欧美 | 操久在线 | 欧美日韩高清国产 | 久久综合毛片 | 五月天婷亚洲天综合网鲁鲁鲁 | 五月婷婷视频 | 国产 视频 高清 免费 | 久久xxxx| 国产精在线 | 麻豆免费在线播放 | 亚洲国产97在线精品一区 | 色综合色综合久久综合频道88 | 日本久热 | 免费福利在线播放 | 亚洲视频综合在线 | 久久久国际精品 | 免费日韩高清 | 97香蕉久久超级碰碰高清版 | 国产成人免费高清 | 成年人av在线播放 | 国产剧情在线一区 | 欧美激情在线看 | 欧美日韩亚洲在线 | 欧美视频18| 免费在线一区二区三区 | 精品国产欧美一区二区三区不卡 | 激情婷婷欧美 | 91九色国产在线 | 午夜影院三级 | 99视频精品全部免费 在线 | 黄色在线观看网站 | 国产免费嫩草影院 | 天天综合操 | 999成人精品 | 丁香六月在线 | 美女av免费| 精品亚洲视频在线观看 | 国产精品精品久久久久久 | 亚洲国产伊人 | 色婷婷综合五月 | 亚洲一区二区精品 | 国产麻豆视频免费观看 | 日韩久久一区二区 | 手机看片国产日韩 | 91久久久久久久一区二区 | 日韩在线观看a | 中文字幕永久免费 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 狠狠色伊人亚洲综合网站野外 | 亚洲精品午夜国产va久久成人 | 成人av电影在线观看 | 男女免费av | 99久久成人 | 丁香六月中文字幕 | 91黄在线看| 亚洲涩涩一区 | 人人藻人人澡人人爽 | 四虎5151久久欧美毛片 | 色综合天天综合 | 久久国产精品99久久久久久老狼 | 免费在线观看日韩视频 | 五月综合色婷婷 | 天天爱天天射 | 97超碰超碰 | 国产日韩欧美视频在线观看 | 久久国产女人 | 久久福利在线 | 国产精品mv在线观看 | 日韩高清在线不卡 | 91麻豆精品国产91久久久无限制版 | 国产精品小视频网站 | 久久精品a | 亚洲第一中文网 | 午夜在线免费观看 | 色综合中文综合网 | 在线观看免费日韩 | 天堂在线成人 | 欧美精品v国产精品 | 五月婷婷丁香 | 五月婷婷欧美视频 | 欧美日韩一区二区久久 | 日本高清免费中文字幕 | 免费看黄色小说的网站 | 人人狠狠综合久久亚洲婷 | 亚洲第一久久久 | 三级黄色片子 | 中文字幕a∨在线乱码免费看 | 99久久99视频只有精品 | 中文在线8新资源库 | 91一区一区三区 | 国产黄在线观看 | 日韩av三区 | 日韩色在线 | 黄色在线视频网址 | 99久热在线精品视频成人一区 | 亚洲黄色一级视频 | 干综合网 | 一级黄色在线免费观看 | 999成人国产 | 免费看一级黄色 | 在线va网站| av电影免费在线看 | 99久久精品久久亚洲精品 | 欧美日韩在线视频一区二区 | 日本丰满少妇免费一区 | 国产超碰在线观看 | 在线日韩三级 | 激情综合五月网 | 国产精品久久久久久久免费观看 | 国产亚洲精品成人 | 国产啊v在线观看 | 91在线操| 在线国产99 | 91亚洲精品在线观看 | 国产高清视频免费观看 | 久久综合之合合综合久久 | 久久成人资源 | 91亚洲成人 | 国产精品久久久av | 在线观看午夜 | 免费色视频网站 | 亚洲aⅴ免费在线观看 | 黄色软件在线看 | 天天操导航| 18做爰免费视频网站 | 九九热re| 又黄又爽又刺激的视频 | 激情av资源 | 精品国产不卡 | 亚洲精选在线观看 | 免费国产在线视频 | 日韩欧美高清免费 | av成人免费观看 | 国产精品久久久久久久久久尿 | 欧美伦理电影一区二区 | 91亚洲精品久久久久图片蜜桃 | 五月天中文在线 | 91桃花视频| 偷拍福利视频一区二区三区 | 福利视频一区二区 | 日韩videos | 免费在线成人av电影 | 日韩在线观看中文字幕 | 久草在线免费电影 | 中文日韩在线视频 | 9999在线 | 精品在线看 | 91中文字幕| 久热免费在线 | 久久99久久99精品 | 国产精品影音先锋 | 久草视频在线资源 | 久久国产精品偷 | 欧美激情精品久久 | 91中文字幕| 啪啪激情网 | 日日摸日日添夜夜爽97 | 伊人亚洲精品 | 久久久九色精品国产一区二区三区 | 欧美少妇的秘密 | 久久96国产精品久久99软件 | 国产国语在线 | 欧美日产一区 | 免费观看一级视频 | 欧美一级片在线观看视频 | 五月婷久久 | 欧美作爱视频 | 一区二区欧美日韩 | 成人黄色电影在线观看 | 欧美天天干 | 二区中文字幕 | 免费看片亚洲 | 天天视频色版 | 欧美少妇18p | 欧美一级性生活 | 午夜久久视频 | 婷婷久久一区二区三区 | 中文字幕超清在线免费 | 久久久亚洲麻豆日韩精品一区三区 | 欧美日韩国产一区 | 精品一区欧美 | 日韩3区| 玖玖视频免费在线 | 一级免费av | 全久久久久久久久久久电影 | 999热视频 | 青青河边草观看完整版高清 | 91秒拍国产福利一区 | 99r在线视频 | 正在播放国产精品 | 97国产视频 | 五月婷综合网 |