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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenGL--摄像机

發(fā)布時間:2024/1/8 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenGL--摄像机 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄(?)[+]

一、 攝像機(jī)

1. 攝像機(jī)/觀察空間

定義一個攝像機(jī),我們需要一個攝像機(jī)在世界空間中的位置、觀察的方向、一個指向它的右測的向量以及一個指向它上方的向量。?
攝像機(jī)的位置?
獲取攝像機(jī)位置很簡單。攝像機(jī)位置簡單來說就是世界空間中代表攝像機(jī)位置的向量。我們把攝像機(jī)位置設(shè)置為前面教程中的那個相同的位置:

glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f);
  • 1

攝像機(jī)方向?
用攝像機(jī)位置向量減去場景原點向量的結(jié)果就是攝像機(jī)指向向量。由于我們知道攝像機(jī)指向z軸負(fù)方向,我們希望方向向量指向攝像機(jī)的z軸正方向。如果我們改變相減的順序,我們就會獲得一個指向攝像機(jī)正z軸方向的向量。

glm::vec3 cameraTarget = glm::vec3(0.0f, 0.0f, 0.0f); glm::vec3 cameraDirection = glm::normalize(cameraPos - cameraTarget);
  • 1
  • 2

右軸?
我們需要的另一個向量是一個右向量(Right Vector),它代表攝像機(jī)空間的x軸的正方向。為獲取右向量我們需要先使用一個小技巧:定義一個上向量(Up Vector)。我們把上向量和第二步得到的攝像機(jī)方向向量進(jìn)行叉乘。兩個向量叉乘的結(jié)果就是同時垂直于兩向量的向量,因此我們會得到指向x軸正方向的那個向量(如果我們交換兩個向量的順序就會得到相反的指向x軸負(fù)方向的向量):

glm::vec3 up = glm::vec3(0.0f, 1.0f, 0.0f); glm::vec3 cameraRight = glm::normalize(glm::cross(up, cameraDirection));
  • 1
  • 2

上軸?
現(xiàn)在我們已經(jīng)有了x軸向量和z軸向量,獲取攝像機(jī)的正y軸相對簡單;我們把右向量和方向向量(Direction Vector)進(jìn)行叉乘:

glm::vec3 cameraUp = glm::cross(cameraDirection, cameraRight);
  • 1

使用這些攝像機(jī)向量我們就可以創(chuàng)建一個LookAt矩陣了,它在創(chuàng)建攝像機(jī)的時候非常有用。

2. LookAt

現(xiàn)在我們有了3個相互垂直的軸和一個定義攝像機(jī)空間的位置坐標(biāo),我們可以創(chuàng)建我們自己的LookAt矩陣了:?
?
R是右向量,U是上向量,D是方向向量P是攝像機(jī)位置向量。注意,位置向量是相反的,因為我們最終希望把世界平移到與我們自身移動的相反方向。?
GLM已經(jīng)提供了這些支持。我們要做的只是定義一個攝像機(jī)位置,一個目標(biāo)位置和一個表示上向量的世界空間中的向量(我們使用上向量計算右向量)。接著GLM就會創(chuàng)建一個LookAt矩陣,我們可以把它當(dāng)作我們的觀察矩陣:

glm::mat4 view; view = glm::lookAt(glm::vec3(0.0f, 0.0f, 3.0f),glm::vec3(0.0f, 0.0f, 0.0f),glm::vec3(0.0f, 1.0f, 0.0f));
  • 1
  • 2
  • 3
  • 4

3. 自由移動

首先我們必須設(shè)置一個攝像機(jī)系統(tǒng),在我們的程序前面定義一些攝像機(jī)變量很有用:

glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f); glm::vec3 cameraFront = glm::vec3(0.0f, 0.0f, -1.0f); glm::vec3 cameraUp = glm::vec3(0.0f, 1.0f, 0.0f);
  • 1
  • 2
  • 3

LookAt函數(shù)現(xiàn)在成了:

view = glm::lookAt(cameraPos, cameraPos + cameraFront, cameraUp);
  • 1

我們首先設(shè)置之前定義的cameraPos為攝像機(jī)位置。方向(Direction)是當(dāng)前的位置加上我們剛剛定義的方向向量。這樣能保證無論我們怎么移動,攝像機(jī)都會注視目標(biāo)。我們在按下某個按鈕時更新cameraPos向量。

我們已經(jīng)為GLFW的鍵盤輸入定義了一個key_callback函數(shù),我們來添加幾個新按鍵命令:

void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode) {...GLfloat cameraSpeed = 0.05f;if (key == GLFW_KEY_W)cameraPos += cameraSpeed * cameraFront;if (key == GLFW_KEY_S)cameraPos -= cameraSpeed * cameraFront;if (key == GLFW_KEY_A)cameraPos -= glm::normalize(glm::cross(cameraFront, cameraUp)) * cameraSpeed;if (key == GLFW_KEY_D)cameraPos += glm::normalize(glm::cross(cameraFront, cameraUp)) * cameraSpeed; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

當(dāng)我們按下WASD鍵,攝像機(jī)的位置都會相應(yīng)更新。如果我們希望向前或向后移動,我們就把位置向量加上或減去方向向量。如果我們希望向旁邊移動,我們做一個叉乘來創(chuàng)建一個右向量,沿著它移動就可以了。這樣就創(chuàng)建了類似使用攝像機(jī)橫向、前后移動的效果。

4. 視角移動

歐拉角?
歐拉角(Euler Angle)是表示3D空間中可以表示任何旋轉(zhuǎn)的三個值,由萊昂哈德·歐拉在18世紀(jì)提出。有三種歐拉角:俯仰角(Pitch)、偏航角(Yaw)和滾轉(zhuǎn)角(Roll),下面的圖片展示了它們的含義:?
?
俯仰角是描述我們?nèi)绾瓮虾屯驴吹慕?#xff0c;它在第一張圖中表示。第二張圖顯示了偏航角,偏航角表示我們往左和往右看的大小。滾轉(zhuǎn)角代表我們?nèi)绾畏瓭L攝像機(jī)。?
對于我們的攝像機(jī)系統(tǒng)來說,我們只關(guān)心俯仰角和偏航角,所以我們不會討論滾轉(zhuǎn)角。用一個給定的俯仰角和偏航角,我們可以把它們轉(zhuǎn)換為一個代表新的方向向量的3D向量。

direction.x = cos(glm::radians(pitch)) * cos(glm::radians(yaw));//譯注:direction代表攝像機(jī)的“前”軸,但此前軸是和本文第一幅圖片的第二個攝像機(jī)的direction是相反的 direction.y = sin(glm::radians(pitch)); direction.z = cos(glm::radians(pitch)) * sin(glm::radians(yaw));
  • 1
  • 2
  • 3

5. 鼠標(biāo)輸入

首先我們要告訴GLFW,應(yīng)該隱藏光標(biāo),并捕捉(Capture)它。捕捉鼠標(biāo)意味著當(dāng)應(yīng)用集中焦點到鼠標(biāo)上的時候光標(biāo)就應(yīng)該留在窗口中(除非應(yīng)用拾取焦點或退出)。我們可以進(jìn)行簡單的配置:?
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);?
這個函數(shù)調(diào)用后,無論我們怎么去移動鼠標(biāo),它都不會顯示了,也不會離開窗口。對于FPS攝像機(jī)系統(tǒng)來說很好:?
為計算俯仰角和偏航角我們需要告訴GLFW監(jiān)聽鼠標(biāo)移動事件。我們用下面的原型創(chuàng)建一個回調(diào)函數(shù)來做這件事(和鍵盤輸入差不多):

void mouse_callback(GLFWwindow* window, double xpos, double ypos);
  • 1

這里的xpos和ypos代表當(dāng)前鼠標(biāo)的位置。我們注冊了GLFW的回調(diào)函數(shù),鼠標(biāo)一移動mouse_callback函數(shù)就被調(diào)用:

glfwSetCursorPosCallback(window, mouse_callback);
  • 1

在處理FPS風(fēng)格的攝像機(jī)鼠標(biāo)輸入的時候,我們必須在獲取最終的方向向量之前做下面這幾步:

  • 計算鼠標(biāo)和上一幀的偏移量。
  • 把偏移量添加到攝像機(jī)和俯仰角和偏航角中。
  • 對偏航角和俯仰角進(jìn)行最大和最小值的限制。
  • 計算方向向量。

我們必須先儲存上一幀的鼠標(biāo)位置,我們把它的初始值設(shè)置為屏幕的中心(屏幕的尺寸是800乘600):

GLfloat lastX = 400, lastY = 300;
  • 1

然后在回調(diào)函數(shù)中計算方向向量:

void mouse_callback(GLFWwindow* window, double xpos, double ypos) {//第一次則將當(dāng)前位置設(shè)置為上一幀的位置來避免抖動if (firstMouse){lastX = xpos;lastY = ypos;firstMouse = false;}//計算偏移量并保存當(dāng)前幀坐標(biāo)為上一幀坐標(biāo)GLfloat xoffset = xpos - lastX;GLfloat yoffset = lastY - ypos;lastX = xpos;lastY = ypos;//縮放偏轉(zhuǎn)量GLfloat sensitivity = 0.05;xoffset *= sensitivity;yoffset *= sensitivity;//計算偏轉(zhuǎn)位置yaw += xoffset;pitch += yoffset;//控制偏轉(zhuǎn)范圍if (pitch > 89.0f)pitch = 89.0f;if (pitch < -89.0f)pitch = -89.0f;//計算實際方向向量glm::vec3 front;front.x = cos(glm::radians(yaw)) * cos(glm::radians(pitch));front.y = sin(glm::radians(pitch));front.z = sin(glm::radians(yaw)) * cos(glm::radians(pitch));cameraFront = glm::normalize(front); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

6. 縮放

當(dāng)視野變小時可視區(qū)域就會減小,產(chǎn)生放大了的感覺。我們用鼠標(biāo)滾輪來放大。和鼠標(biāo)移動、鍵盤輸入一樣我們需要一個鼠標(biāo)滾輪的回調(diào)函數(shù):

void scroll_callback(GLFWwindow* window, double xoffset, double yoffset) {if (aspect >= 1.0f && aspect <= 45.0f)aspect -= yoffset;if (aspect <= 1.0f)aspect = 1.0f;if (aspect >= 45.0f)aspect = 45.0f; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

yoffset值代表我們滾動的大小。當(dāng)scroll_callback函數(shù)調(diào)用后,我們改變?nèi)謅spect變量的內(nèi)容。因為45.0f是默認(rèn)的fov,我們將會把縮放級別限制在1.0f到45.0f。

我們現(xiàn)在在每一幀都必須把透視投影矩陣上傳到GPU,但這一次使aspect變量作為它的fov:

projection = glm::perspective(aspect, (GLfloat)WIDTH / (GLfloat)HEIGHT, 0.1f, 100.0f);
  • 1

最后不要忘記注冊滾動回調(diào)函數(shù):

glfwSetScrollCallback(window, scroll_callback);
  • 1

7. 攝像機(jī)類

直接貼出原教程給出的攝像機(jī)類:

#pragma once// Std. Includes #include <vector>// GL Includes #include <GL/glew.h> #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp>// Defines several possible options for camera movement. Used as abstraction to stay away from window-system specific input methods enum Camera_Movement {FORWARD,BACKWARD,LEFT,RIGHT };// Default camera values const GLfloat YAW = -90.0f; const GLfloat PITCH = 0.0f; const GLfloat SPEED = 3.0f; const GLfloat SENSITIVTY = 0.25f; const GLfloat ZOOM = 45.0f;// An abstract camera class that processes input and calculates the corresponding Eular Angles, Vectors and Matrices for use in OpenGL class Camera { public:// Camera Attributesglm::vec3 Position;glm::vec3 Front;glm::vec3 Up;glm::vec3 Right;glm::vec3 WorldUp;// Eular AnglesGLfloat Yaw;GLfloat Pitch;// Camera optionsGLfloat MovementSpeed;GLfloat MouseSensitivity;GLfloat Zoom;// Constructor with vectorsCamera(glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3 up = glm::vec3(0.0f, 1.0f, 0.0f), GLfloat yaw = YAW, GLfloat pitch = PITCH) : Front(glm::vec3(0.0f, 0.0f, -1.0f)), MovementSpeed(SPEED), MouseSensitivity(SENSITIVTY), Zoom(ZOOM){this->Position = position;this->WorldUp = up;this->Yaw = yaw;this->Pitch = pitch;this->updateCameraVectors();}// Constructor with scalar valuesCamera(GLfloat posX, GLfloat posY, GLfloat posZ, GLfloat upX, GLfloat upY, GLfloat upZ, GLfloat yaw, GLfloat pitch) : Front(glm::vec3(0.0f, 0.0f, -1.0f)), MovementSpeed(SPEED), MouseSensitivity(SENSITIVTY), Zoom(ZOOM){this->Position = glm::vec3(posX, posY, posZ);this->WorldUp = glm::vec3(upX, upY, upZ);this->Yaw = yaw;this->Pitch = pitch;this->updateCameraVectors();}// Returns the view matrix calculated using Eular Angles and the LookAt Matrixglm::mat4 GetViewMatrix(){return glm::lookAt(this->Position, this->Position + this->Front, this->Up);}// Processes input received from any keyboard-like input system. Accepts input parameter in the form of camera defined ENUM (to abstract it from windowing systems)void ProcessKeyboard(Camera_Movement direction, GLfloat deltaTime){GLfloat velocity = this->MovementSpeed * deltaTime;if (direction == FORWARD)this->Position += this->Front * velocity;if (direction == BACKWARD)this->Position -= this->Front * velocity;if (direction == LEFT)this->Position -= this->Right * velocity;if (direction == RIGHT)this->Position += this->Right * velocity;}// Processes input received from a mouse input system. Expects the offset value in both the x and y direction.void ProcessMouseMovement(GLfloat xoffset, GLfloat yoffset, GLboolean constrainPitch = true){xoffset *= this->MouseSensitivity;yoffset *= this->MouseSensitivity;this->Yaw += xoffset;this->Pitch += yoffset;// Make sure that when pitch is out of bounds, screen doesn't get flippedif (constrainPitch){if (this->Pitch > 89.0f)this->Pitch = 89.0f;if (this->Pitch < -89.0f)this->Pitch = -89.0f;}// Update Front, Right and Up Vectors using the updated Eular anglesthis->updateCameraVectors();}// Processes input received from a mouse scroll-wheel event. Only requires input on the vertical wheel-axisvoid ProcessMouseScroll(GLfloat yoffset){if (this->Zoom >= 1.0f && this->Zoom <= 45.0f)this->Zoom -= yoffset;if (this->Zoom <= 1.0f)this->Zoom = 1.0f;if (this->Zoom >= 45.0f)this->Zoom = 45.0f;}private:// Calculates the front vector from the Camera's (updated) Eular Anglesvoid updateCameraVectors(){// Calculate the new Front vectorglm::vec3 front;front.x = cos(glm::radians(this->Yaw)) * cos(glm::radians(this->Pitch));front.y = sin(glm::radians(this->Pitch));front.z = sin(glm::radians(this->Yaw)) * cos(glm::radians(this->Pitch));this->Front = glm::normalize(front);// Also re-calculate the Right and Up vectorthis->Right = glm::normalize(glm::cross(this->Front, this->WorldUp)); // Normalize the vectors, because their length gets closer to 0 the more you look up or down which results in slower movement.this->Up = glm::normalize(glm::cross(this->Right, this->Front));} };
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133

轉(zhuǎn)載請注明出處:http://blog.csdn.net/ylbs110/article/details/52506033

二、 示例

代碼:

#include <iostream> using namespace std; // GLEW #define GLEW_STATIC #include <GL/glew.h> // GLFW #include <GLFW/glfw3.h> // SOIL #include <SOIL\SOIL.h>#include <glm\glm.hpp> #include <glm\gtc\matrix_transform.hpp> #include <glm\gtc\type_ptr.hpp>#include "Shader.h" #include "Camera.h"const GLuint WIDTH = 800, HEIGHT = 600;void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode); GLuint loadTexture(string fileName, GLint REPEAT, GLint FILTER); void do_movement(); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void mouse_callback(GLFWwindow* window, double xpos, double ypos); // Shaders const GLchar* vertexShaderSource = "#version 330 core\n" "layout (location = 0) in vec3 position;\n"//頂點數(shù)據(jù)傳入的坐標(biāo) "layout (location = 1) in vec3 color;\n"//頂點數(shù)據(jù)傳入的顏色 "layout (location = 2) in vec2 texCoord;\n"//頂點數(shù)據(jù)傳入的顏色 "uniform vec4 offset;\n" "uniform float mixPar;\n" "uniform mat4 model;\n" "uniform mat4 view;\n" "uniform mat4 projection;\n" "out vec3 Color;\n" "out vec2 TexCoord;\n" "out vec4 vertexColor;\n"//將頂點坐標(biāo)作為顏色傳入片段著色器,測試所得效果 "out float MixPar;\n" "void main()\n" "{\n" "gl_Position =projection * view * model* vec4(position.x, position.y, position.z, 1.0)+offset;\n" "vertexColor=gl_Position*0.2f;\n" "Color=color*0.2f;\n" "TexCoord=texCoord;\n" "MixPar=mixPar;\n" "}\0";const GLchar* fragmentShaderSource = "#version 330 core\n" "out vec4 color;\n" "in vec4 vertexColor;\n" "in vec3 Color;\n" "in vec2 TexCoord;\n" "in float MixPar;\n" "uniform sampler2D ourTexture1;\n" "uniform sampler2D ourTexture2;\n" "void main()\n" "{\n" "color =mix(texture(ourTexture1, TexCoord),texture(ourTexture2, vec2(TexCoord.x,1-TexCoord.y)),MixPar)+vec4(Color, 1.0f)+vertexColor;\n"//合成兩張紋理并對第二張紋理進(jìn)行翻轉(zhuǎn)操作,混合比例由上下鍵控制 "}\n\0"; Camera mainCamera; Shader shader;//shader GLuint texContainer, texAwesomeface;//紋理idfloat key_UD = 0.5f;//混合比例 GLuint VBO, VAO;GLfloat deltaTime = 0.0f; // 當(dāng)前幀遇上一幀的時間差 GLfloat lastFrame = 0.0f; // 上一幀的時間bool keys[1024];GLfloat lastX = 400, lastY = 300; GLfloat scrollSpeed = 0.05f; bool firstMouse = true;glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f); glm::vec3 cameraFront = glm::vec3(0.0f, 0.0f, -1.0f); glm::vec3 cameraUp = glm::vec3(0.0f, 1.0f, 0.0f);void shaderInit() {shader = Shader(vertexShaderSource, fragmentShaderSource); } void textureInit() {texContainer = loadTexture("container.jpg", GL_CLAMP_TO_EDGE, GL_LINEAR);texAwesomeface = loadTexture("awesomeface.png", GL_MIRRORED_REPEAT, GL_NEAREST); } GLuint loadTexture(string fileName,GLint REPEAT, GLint FILTER) {//創(chuàng)建紋理GLuint texture;glGenTextures(1, &texture);//綁定紋理glBindTexture(GL_TEXTURE_2D, texture);// 為當(dāng)前綁定的紋理對象設(shè)置環(huán)繞、過濾方式glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, REPEAT);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, REPEAT);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, FILTER);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, FILTER);//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);// 加載紋理int width, height;unsigned char* image = SOIL_load_image(fileName.c_str(), &width, &height, 0, SOIL_LOAD_RGB);// 生成紋理glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);glGenerateMipmap(GL_TEXTURE_2D);//釋放圖像的內(nèi)存并解綁紋理對象SOIL_free_image_data(image);glBindTexture(GL_TEXTURE_2D, 0);return texture; }void vertexObjectInit() {//不使用索引緩沖對象用兩個三角形繪制一個梯形// 設(shè)置頂點緩存和屬性指針GLfloat vertices[] = {-0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f,0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f,1.0f, 0.0f,0.5f, 0.5f, -0.5f, 1.0f, 1.0f, 0.0f,1.0f, 1.0f,0.5f, 0.5f, -0.5f, 1.0f, 1.0f, 0.0f,1.0f, 1.0f,-0.5f, 0.5f, -0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f,-0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f,0.0f, 0.0f,-0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f,0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f,1.0f, 0.0f,0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.0f,1.0f, 1.0f,0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.0f,1.0f, 1.0f,-0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f,-0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f,-0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f,-0.5f, 0.5f, -0.5f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f,-0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f,-0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f,-0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f,-0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f,0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.0f,1.0f, 0.0f,0.5f, 0.5f, -0.5f, 1.0f, 1.0f, 0.0f,1.0f, 1.0f,0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f,0.0f, 1.0f,0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f,0.0f, 1.0f,0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f,0.0f, 0.0f,0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.0f,1.0f, 0.0f,-0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f,0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f,1.0f, 1.0f,0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f,1.0f, 0.0f,0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f,1.0f, 0.0f,-0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f,-0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f,-0.5f, 0.5f, -0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f,0.5f, 0.5f, -0.5f, 1.0f, 1.0f, 0.0f,1.0f, 1.0f,0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.0f,1.0f, 0.0f,0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.0f,1.0f, 0.0f,-0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f,-0.5f, 0.5f, -0.5f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f};//創(chuàng)建索引緩沖對象glGenBuffers(1, &VBO);glGenVertexArrays(1, &VAO);glBindVertexArray(VAO);// 把頂點數(shù)組復(fù)制到緩沖中供OpenGL使用glBindBuffer(GL_ARRAY_BUFFER, VBO);glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);// 位置屬性glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)0);glEnableVertexAttribArray(0);// 顏色屬性glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)(3 * sizeof(GLfloat)));glEnableVertexAttribArray(1);glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)(6 * sizeof(GLfloat)));glEnableVertexAttribArray(2);glBindBuffer(GL_ARRAY_BUFFER, 0);// 這個方法將頂點屬性指針注冊到VBO作為當(dāng)前綁定頂點對象,然后我們就可以安全的解綁glBindVertexArray(0);// 解綁 VAO (這通常是一個很好的用來解綁任何緩存/數(shù)組并防止奇怪錯誤的方法) }int main() {//初始化GLFWglfwInit();glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);//創(chuàng)建窗口對象GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT, "LearnOpenGL", nullptr, nullptr);if (window == nullptr){std::cout << "Failed to create GLFW window" << std::endl;glfwTerminate();return -1;}glfwMakeContextCurrent(window);//注冊鍵盤回調(diào)glfwSetKeyCallback(window, key_callback);//注冊鼠標(biāo)回調(diào)glfwSetCursorPosCallback(window, mouse_callback);//注冊鼠標(biāo)滾輪回到glfwSetScrollCallback(window, scroll_callback);//設(shè)置光標(biāo)隱藏并捕獲glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);//初始化GLEWglewExperimental = GL_TRUE;if (glewInit() != GLEW_OK){std::cout << "Failed to initialize GLEW" << std::endl;return -1;}//告訴OpenGL渲染窗口尺寸大小int width, height;glfwGetFramebufferSize(window, &width, &height);glViewport(0, 0, width, height);glEnable(GL_DEPTH_TEST);//初始化并綁定shadersshaderInit();//初始化texturestextureInit();//初始化頂點對象數(shù)據(jù)vertexObjectInit();mainCamera = Camera();//讓窗口接受輸入并保持運(yùn)行while (!glfwWindowShouldClose(window)){GLfloat currentFrame = glfwGetTime();deltaTime = currentFrame - lastFrame;lastFrame = currentFrame;//檢查事件glfwPollEvents();do_movement();//渲染指令glClearColor(0.2f, 0.3f, 0.3f, 1.0f);glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//設(shè)置根據(jù)時間變換的x,y偏移值,最終效果為圓周運(yùn)動GLfloat timeValue = glfwGetTime();GLfloat offsetx = (sin(timeValue) / 2) + 0.5;GLfloat offsety = (cos(timeValue) / 2) + 0.5;//繪制長方形 shader.Use();//綁定兩張貼圖glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D, texContainer);glUniform1i(glGetUniformLocation(shader.Program, "ourTexture1"), 0);glActiveTexture(GL_TEXTURE1);glBindTexture(GL_TEXTURE_2D, texAwesomeface);glUniform1i(glGetUniformLocation(shader.Program, "ourTexture2"), 1);// 更新uniform值//設(shè)置運(yùn)動軌跡//GLint vertexorangeLocation = glGetUniformLocation(shader.Program, "offset");//glUniform4f(vertexorangeLocation, offsetx, offsety, 0.0f, 1.0f);//設(shè)置混合比例GLint mixPar = glGetUniformLocation(shader.Program, "mixPar");glUniform1f(mixPar, key_UD);glm::mat4 model;model = glm::rotate(model, (GLfloat)glfwGetTime() * 5.0f, glm::vec3(0.5f, 1.0f, 0.0f));glm::mat4 view;view = mainCamera.GetViewMatrix();glm::mat4 projection;projection = glm::perspective(mainCamera.Zoom*scrollSpeed, (float)(WIDTH / HEIGHT), 0.1f, 100.0f);GLint modelLoc = glGetUniformLocation(shader.Program, "model");glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model));GLint viewLoc = glGetUniformLocation(shader.Program, "view");glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view));GLint projectionLoc = glGetUniformLocation(shader.Program, "projection");glUniformMatrix4fv(projectionLoc, 1, GL_FALSE, glm::value_ptr(projection));glm::vec3 cubePositions[] = {glm::vec3(0.0f, 0.0f, 0.0f),glm::vec3(2.0f, 5.0f, -15.0f),glm::vec3(-1.5f, -2.2f, -2.5f),glm::vec3(-3.8f, -2.0f, -12.3f),glm::vec3(2.4f, -0.4f, -3.5f),glm::vec3(-1.7f, 3.0f, -7.5f),glm::vec3(1.3f, -2.0f, -2.5f),glm::vec3(1.5f, 2.0f, -2.5f),glm::vec3(1.5f, 0.2f, -1.5f),glm::vec3(-1.3f, 1.0f, -1.5f)};glBindVertexArray(VAO);for (GLuint i = 0; i < 10; i++){glm::mat4 model;model = glm::translate(model, cubePositions[i]);if (i < 4) { GLfloat angle = (GLfloat)glfwGetTime()*5.0f * i;model = glm::rotate(model, angle, glm::vec3(1.0f, 0.3f, 0.5f));glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model));}else{glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model));}glDrawArrays(GL_TRIANGLES, 0, 36);}glBindVertexArray(0);//交換緩沖glfwSwapBuffers(window);}glDeleteVertexArrays(1, &VAO);glDeleteBuffers(1, &VBO);//釋放資源glfwTerminate();return 0; } void do_movement() {// 攝像機(jī)控制GLfloat cameraSpeed = 5.0f* deltaTime;if (keys[GLFW_KEY_W])mainCamera.ProcessKeyboard(FORWARD, deltaTime);if (keys[GLFW_KEY_S])mainCamera.ProcessKeyboard(BACKWARD, deltaTime);if (keys[GLFW_KEY_A])mainCamera.ProcessKeyboard(LEFT, deltaTime);if (keys[GLFW_KEY_D])mainCamera.ProcessKeyboard(RIGHT, deltaTime); } void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode) {// 當(dāng)用戶按下ESC鍵,我們設(shè)置window窗口的WindowShouldClose屬性為true// 關(guān)閉應(yīng)用程序if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)glfwSetWindowShouldClose(window, GL_TRUE);if (key == GLFW_KEY_UP&& action == GLFW_PRESS)//按下UP鍵增加混合比例key_UD = key_UD + 0.1f;if (key == GLFW_KEY_DOWN&& action == GLFW_PRESS)//按下DOWN減小混合比例key_UD = key_UD - 0.1f;if (action == GLFW_PRESS)keys[key] = true;else if (action == GLFW_RELEASE)keys[key] = false; } void mouse_callback(GLFWwindow* window, double xpos, double ypos) {if (firstMouse){lastX = xpos;lastY = ypos;firstMouse = false;}GLfloat xoffset = xpos - lastX;GLfloat yoffset = lastY - ypos; // Reversed since y-coordinates go from bottom to left lastX = xpos;lastY = ypos;mainCamera.ProcessMouseMovement(xoffset, yoffset); }void scroll_callback(GLFWwindow* window, double xoffset, double yoffset) {cout << yoffset << endl;mainCamera.ProcessMouseScroll(yoffset); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384

結(jié)果:

wsad可以控制上下左右,鼠標(biāo)控制攝像頭方向,滾輪可以拉伸:?

總結(jié)

以上是生活随笔為你收集整理的OpenGL--摄像机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

天天射天天搞 | 免费高清在线观看电视网站 | 最新国产视频 | 天天射天天爱天天干 | 99精品视频一区二区 | 一区二区欧美激情 | 毛片一级免费一级 | 国产成人久久精品77777 | 日女人免费视频 | 精品一区电影国产 | 日本精品久久久久中文字幕 | 中文字幕av免费观看 | 中文字幕网站视频在线 | 国产五月色婷婷六月丁香视频 | 天堂av在线免费 | 欧洲性视频 | 中文字幕二区 | 99国产在线观看 | 玖玖国产精品视频 | 一区二区三区高清不卡 | 国产精品自产拍在线观看蜜 | 韩国精品在线 | 婷婷亚洲激情 | 国产精品美女在线 | 9999精品免费视频 | 成年人免费av | 又黄又爽的免费高潮视频 | 久久久久北条麻妃免费看 | 国产精品久久久久久久毛片 | 可以免费看av | 国产免费一区二区三区最新 | 西西444www高清大胆 | www.天天色.com| av免费成人 | 97热在线观看 | 24小时日本在线www免费的 | 国产一区二区在线看 | 国产91区 | 青草视频在线 | 精品久久一二三区 | 久草在线看片 | 91网页版免费观看 | www.久久久com | 少妇高潮流白浆在线观看 | 日本在线免费看 | 色姑娘综合网 | 国产一区免费视频 | 黄色小网站在线 | 国产一在线精品一区在线观看 | 久久99热久久99精品 | 亚洲国产精品va在线看 | 91精品视频在线看 | 夜夜操夜夜干 | 成人黄大片视频在线观看 | 麻豆成人在线观看 | 在线视频第一页 | 天堂v中文 | 中文字幕一区二区三区久久 | 久久精品观看 | 欧美精品亚洲精品 | 国产手机在线精品 | 国产大陆亚洲精品国产 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 在线观看中文 | 久久综合九色欧美综合狠狠 | 久久精品综合 | 国产高清专区 | 久久久久久久久久影视 | 欧美精品久久久久久久免费 | 亚洲激情 在线 | av一级网站| 天天撸夜夜操 | 国内外成人在线 | 一级黄色片在线播放 | 国产午夜精品在线 | 久久久国产精品一区二区中文 | 99免费精品视频 | 992tv成人免费看片 | 亚洲欧美精品一区 | 亚洲在线视频播放 | 国产综合视频在线观看 | 国产高清av免费在线观看 | 久久不卡国产精品一区二区 | 欧美在线视频一区二区 | 高清国产在线一区 | 色噜噜在线观看 | 免费 在线 中文 日本 | 欧美精品在线视频观看 | 成人av av在线 | 伊人狠狠操 | 久久精品老司机 | 一区二区三区污 | 成人动漫一区二区三区 | 婷婷久草 | av高清影院 | 婷婷性综合 | 日日天天 | 九九国产视频 | 麻豆久久久久久久 | 国产一区在线精品 | 免费av成人在线 | 婷婷av综合| 欧美一级高清片 | 天天操天天干天天操天天干 | 亚洲尺码电影av久久 | 91精品国自产在线 | 国产成人三级一区二区在线观看一 | 国产精品一区二区在线观看 | av免费在线观看网站 | 一本一道久久a久久精品蜜桃 | 狠狠干免费 | 最新中文字幕在线资源 | 日韩欧美精品在线视频 | 久久免费大片 | 日本一区二区三区免费看 | 九九热在线观看 | 日韩黄色av网站 | 久久99欧美 | 欧美日韩亚洲在线观看 | 最新av网址在线观看 | 久久精品亚洲精品国产欧美 | 国产视频一区在线播放 | 成人精品视频 | 最新婷婷色 | 射九九 | 欧美性视频网站 | 高清不卡毛片 | 手机看片午夜 | 色综合久久综合 | 国产精品久久久久久久久久久久 | 人人超碰免费 | 久久五月婷婷综合 | 成人性生交大片免费看中文网站 | 国产999精品久久久影片官网 | 亚洲精品国产精品国自产观看 | 色婷婷综合久久久中文字幕 | 又大又硬又黄又爽视频在线观看 | 97精产国品一二三产区在线 | 日韩精品久久久免费观看夜色 | 91在线播放视频 | 亚洲日本国产 | 亚洲欧美日韩中文在线 | 久久99网站 | 国产在线视频导航 | 国产日韩高清在线 | 国产精品一区专区欧美日韩 | 香蕉视频91| a视频免费在线观看 | 少妇av网 | 中文字幕一区二区三区乱码在线 | 亚a在线| 欧美精品一级视频 | 超碰公开在线 | 91福利国产在线观看 | 亚洲黄色小说网址 | 国产免费作爱视频 | 国内外成人在线 | 久久久国产精华液 | 99国产在线观看 | 成人久久久精品国产乱码一区二区 | 久久久国产精品久久久 | 国产精品每日更新 | 99热高清| 亚洲欧美日本一区二区三区 | 91在线公开视频 | 欧美成人精品三级在线观看播放 | 日韩欧美精品免费 | 超碰精品在线观看 | 国产精品激情偷乱一区二区∴ | 久久综合成人网 | 欧美人zozo | 亚洲爽爽网 | 亚洲最大av网 | 久久观看最新视频 | 日韩毛片精品 | 久在线观看视频 | 中文字幕在线网址 | 亚洲成人软件 | 国产一级性生活视频 | 欧美日一级片 | 丰满少妇对白在线偷拍 | 在线亚洲欧美视频 | 免费精品视频在线 | 婷婷丁香激情五月 | 色欧美日韩 | 久久综合九色综合久久久精品综合 | 缴情综合网五月天 | 久久久电影 | 日韩高清观看 | 亚洲乱码精品久久久久 | www国产精品com | 91xav| 国产精品免费观看网站 | 成人免费视频网 | 开心激情综合网 | 99久久久成人国产精品 | 特级西西www44高清大胆图片 | 成人国产一区二区 | 久久免费精彩视频 | 亚洲国产精品500在线观看 | 婷婷中文在线 | 久久人人爽爽 | 欧美嫩草影院 | 亚洲国产成人在线播放 | 日韩成人精品 | 免费中文字幕在线观看 | 香蕉视频网址 | 国产精选在线 | 黄色的片子 | 亚洲精品天天 | 婷婷丁香七月 | 久久这里| 在线观看中文字幕第一页 | 久久久久国产一区二区三区 | 欧美日韩中文在线视频 | 国产九九九精品视频 | 9在线观看免费高清完整版 玖玖爱免费视频 | 久久精品aaa | 亚洲国产日韩一区 | 天堂av免费 | av 一区二区三区四区 | 91在线观看欧美日韩 | 久久国产午夜精品理论片最新版本 | 久久九九国产精品 | 丁香婷婷激情国产高清秒播 | 久久五月婷婷综合 | 激情视频免费观看 | 国产一级免费av | 一级电影免费在线观看 | 久久久免费观看完整版 | 99久国产| 91麻豆精品91久久久久同性 | 五月婷婷久久综合 | 精品国产电影一区二区 | 香蕉网址| 日韩v在线91成人自拍 | 国产高清日韩 | 97视频在线观看成人 | 久久福利 | 91高清完整版在线观看 | 国产在线a不卡 | 欧美日在线观看 | 操操操日日日干干干 | 欧美在线观看小视频 | av成人免费观看 | 中文字幕一区二区三区乱码不卡 | 国产成人精品一区二区三区网站观看 | 亚洲三级av | 免费毛片一区二区三区久久久 | 正在播放国产一区二区 | 国产午夜精品久久 | 久久99免费 | 不卡av在线 | 99久久精品国产网站 | 欧美色精品天天在线观看视频 | 美女精品 | 日韩在线 一区二区 | 久久99久国产精品黄毛片入口 | 亚洲精品自在在线观看 | 天天操天天色综合 | japanesefreesexvideo高潮 | 国产黄在线看 | 深爱激情五月婷婷 | 欧美日韩另类视频 | 中文在线字幕免费观 | 91人人射 | 高清国产午夜精品久久久久久 | 在线视频一区二区 | 久久国产亚洲视频 | 国产亚洲午夜高清国产拍精品 | 亚州成人av在线 | 国产在线观看午夜 | 婷婷婷国产在线视频 | 亚洲精品美女在线 | 久久精品日本啪啪涩涩 | 日韩一区二区三区免费视频 | 免费精品国产va自在自线 | 91av视频网| 欧美久久成人 | 97成人啪啪网| 日韩三级视频在线看 | 免费黄色av电影 | 五月婷婷,六月丁香 | 午夜在线免费观看 | 国产一区二区午夜 | 99精品视频在线播放观看 | 久久婷婷激情 | 九九99 | 天干啦夜天干天干在线线 | www.69xx| 91九色视频在线观看 | 日日操操操 | 色综合天天色 | 一本一本久久a久久 | 日韩高清一区 | 国产亚洲精品久久久久久 | av电影在线播放 | 精品亚洲午夜久久久久91 | 91污视频在线 | 国产精品99在线观看 | 婷婷婷国产在线视频 | 成人小视频在线观看免费 | 久久高清免费视频 | 丝袜+亚洲+另类+欧美+变态 | 中文区中文字幕免费看 | 精品国产欧美一区二区 | 在线观看日韩专区 | 亚洲网站在线 | 久久这里只有精品视频99 | 亚洲一区网 | 欧美一级小视频 | 久久激情五月丁香伊人 | 国产精品一区二区久久 | 蜜臀av麻豆 | 欧美网址在线观看 | 亚洲另类交 | 精品久久福利 | 国产色女 | 国产一线天在线观看 | 男女精品久久 | 91视频免费国产 | 黄色片亚洲| 亚洲成av人影片在线观看 | 色综合久久五月 | 最近免费中文字幕大全高清10 | 开心激情综合网 | 日韩精品一区二区三区丰满 | 一区二区三区在线不卡 | 91黄色影视 | 久草在线视频网 | 一本到在线 | 色午夜影院 | 91免费在线视频 | 日本精品视频免费 | av成人免费 | 久草在线观看视频免费 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 亚洲免费观看视频 | 久久综合狠狠综合久久狠狠色综合 | 国产在线观看污片 | 久久在线一区 | 国产又粗又猛又黄 | 伊人www22综合色 | 久久精品久久久精品美女 | 色夜影院| 午夜av在线播放 | 国产日韩欧美在线播放 | 蜜臀精品久久久久久蜜臀 | 国产一在线精品一区在线观看 | 99热99re6国产在线播放 | 久久成年人 | 欧美 日韩 国产 中文字幕 | 成人在线一区二区三区 | 丝袜美腿在线视频 | 一区二区三区四区影院 | av在线免费在线观看 | 视频二区在线 | 国产精品免费不卡 | 亚洲欧美成人网 | 最近中文字幕国语免费高清6 | 亚洲综合视频在线 | 97热久久免费频精品99 | 久久久久一区二区三区四区 | 天天爱天天操天天射 | 四虎在线观看精品视频 | 国产不卡一区二区视频 | 日韩av一区二区三区四区 | 日日夜夜天天干 | avcom在线| 69精品视频 | 国产成人三级三级三级97 | 99久久精品无码一区二区毛片 | 又黄又爽又湿又无遮挡的在线视频 | 欧美韩国日本在线观看 | 色网站在线免费 | 久久婷婷五月综合色丁香 | 青青草华人在线视频 | 精品久久一区二区三区 | 在线视频一二区 | 九草在线视频 | 成+人+色综合 | 国产精品一区二区中文字幕 | 一本到视频在线观看 | 黄av在线 | 欧洲精品亚洲精品 | 久久99久国产精品黄毛片入口 | 亚洲 中文 在线 精品 | 99在线免费视频 | 色多多污污| 五月香婷 | 91麻豆.com | www.看片网站 | 日韩高清www | 日本中文字幕在线免费观看 | 一级黄色片在线免费观看 | 欧美精品在线视频观看 | 亚洲国产影院av久久久久 | 欧美色图p | 亚洲黄色在线看 | 久久激情电影 | 国产精品久久久免费 | 中文在线免费视频 | 午夜久久成人 | 色婷婷激情电影 | 91亚州 | 日韩v欧美v日本v亚洲v国产v | 国产亚洲综合性久久久影院 | 国产亚洲精品久久久久久无几年桃 | 91综合视频在线观看 | 日韩激情一二三区 | 伊人五月天.com | 色欲综合视频天天天 | 午夜三级在线 | 岛国一区在线 | 国产午夜一级毛片 | av日韩精品| 五月激情久久久 | 国产欧美三级 | 欧美日韩精品国产 | 婷婷伊人网 | 成人在线视频观看 | 成人精品国产 | 中文字幕日韩一区二区三区不卡 | 97精品欧美91久久久久久 | 欧美日韩18 | 在线成人免费电影 | 精品美女在线观看 | 九九九视频在线 | 国产精品视频永久免费播放 | 精品少妇一区二区三区在线 | 精品国偷自产国产一区 | av软件在线观看 | 日本三级大片 | 五月天婷婷在线视频 | 天天狠狠操 | 成人黄在线观看 | 丁香六月久久综合狠狠色 | 日韩电影在线观看一区二区 | 精品国产美女 | 青草视频在线看 | 免费在线播放视频 | 在线免费性生活片 | 91激情小视频 | 久久在线 | 欧美精品乱码久久久久久 | 国产福利一区在线观看 | 久久久精品国产一区二区三区 | 人人草在线观看 | 久久久国产一区二区三区四区小说 | 成人av电影免费在线播放 | 成人黄色电影在线观看 | 九九综合九九综合 | 久久综合操 | 日韩精品免费一线在线观看 | 精品国产乱码久久久久久三级人 | 最近免费中文字幕大全高清10 | 天天干天天操天天干 | 欧美一级片在线观看视频 | 福利一区二区三区四区 | 国产乱码精品一区二区蜜臀 | 午夜精品福利一区二区三区蜜桃 | 国内精品久久久精品电影院 | 91成年视频| 久草在线播放视频 | 碰超在线| 国产精品私人影院 | 麻豆免费视频观看 | 麻豆视频免费入口 | 色婷婷狠 | 免费看网站在线 | 免费精品在线观看 | 色多多污污 | 精品久久久久久国产偷窥 | 久久黄网站 | 成人a视频 | 黄色成人在线网站 | 欧美做受xxx | 黄色毛片视频 | 欧美日韩精品在线视频 | 国产99久久九九精品免费 | 456成人精品影院 | 在线观看91久久久久久 | 欧美激情视频在线观看免费 | 在线韩国电影免费观影完整版 | 在线国产片 | 在线观看久久 | 99成人精品 | 一二三久久久 | 免费精品国产 | 国产成人精品午夜在线播放 | 欧美一级免费高清 | 国产精品激情在线观看 | 国产在线色站 | 国产免费国产 | 精品嫩模福利一区二区蜜臀 | 黄色免费电影网站 | 在线观看视频你懂得 | 久久一二三四 | 在线日韩视频 | 亚洲国产网站 | 二区视频在线 | 亚洲精品系列 | 狠狠操狠狠 | 日韩网站在线免费观看 | 亚洲男男gaygay无套同网址 | 婷婷精品在线 | 在线免费观看黄色大片 | 日韩电影在线观看中文字幕 | 最近中文字幕在线播放 | 亚洲成年人免费网站 | 在线播放视频一区 | 日韩区视频| 久久成人国产精品免费软件 | av先锋影音少妇 | 91免费视频国产 | 国产盗摄精品一区二区 | 摸阴视频 | av片中文字幕 | 欧美夫妻性生活电影 | 91成人精品一区在线播放 | 欧美日韩另类视频 | 特黄特色特刺激视频免费播放 | 99久久精品一区二区成人 | 五月激情久久 | 久久99国产精品久久 | 91专区在线观看 | 亚洲人在线视频 | 久久综合给合久久狠狠色 | 999国内精品永久免费视频 | 欧美在线视频第一页 | 色综合夜色一区 | 成av人电影 | 免费在线观看日韩欧美 | 免费在线激情视频 | 香蕉视频在线播放 | 激情偷乱人伦小说视频在线观看 | 欧美另类视频 | 韩国精品在线观看 | 蜜桃视频日韩 | 国内精品久久久久久久97牛牛 | 日韩精品免费一区二区三区 | 日韩久久精品一区 | 国内精品久久久久久久久久久 | 国产高清不卡 | 日本在线观看中文字幕 | 欧美精品在线一区 | 久久五月网 | 天天射天 | 毛片美女网站 | 日韩毛片在线免费观看 | 九九热精品视频在线播放 | 在线国产91 | 在线观看 国产 | 中文电影网 | 天天综合五月天 | www.福利 | 偷拍福利视频一区二区三区 | 韩日av在线 | 亚洲伦理中文字幕 | 香蕉蜜桃视频 | 亚洲 在线 | 狂野欧美激情性xxxx | 日韩精品免费在线播放 | 97精品一区 | 一区二区三区电影 | 国产美女久久久 | 免费看v片 | 日韩一区二区三区免费视频 | 国产一区精品在线观看 | www色av| 国产一区二区不卡视频 | 国产99久久久久久免费看 | 亚洲九九爱| 久久久国产一区二区三区四区小说 | 午夜精品一区二区三区在线观看 | 日韩精品久久中文字幕 | 国产亚洲日本 | 成人免费在线播放 | 日韩av中文在线 | 国产视频2021 | 亚洲成人网在线 | 最新日韩视频在线观看 | 亚洲精品自拍视频在线观看 | 97精品一区二区三区 | 久久一区二区三区日韩 | 99久久精品国产欧美主题曲 | 四虎影视4hu4虎成人 | 97在线观看免费高清 | 日韩av女优视频 | 久久精品三级 | 婷婷亚洲激情 | 99在线高清视频在线播放 | 久久久精品综合 | 色综合天 | 亚洲黄色在线观看 | 操操操人人人 | 免费色黄 | 欧美日性视频 | 97色国产 | 搡bbbb搡bbb视频 | 亚洲国产欧美在线看片xxoo | 国产精品久久久久9999 | 9在线观看免费 | 日日干日日 | av电影免费看 | 五月天综合网站 | 国产亚洲激情视频在线 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | av丝袜天堂 | 激情www| 福利电影一区二区 | 偷拍精偷拍精品欧洲亚洲网站 | 国产成人精品一区二三区 | 婷婷丁香花 | 色噜噜狠狠狠狠色综合久不 | 久久精品美女 | 国产亚洲精品久久久久久久久久 | 麻豆91精品 | 91成人精品在线 | 久草在线这里只有精品 | 丁香激情视频 | 婷婷五天天在线视频 | 国产成人精品不卡 | 国产经典av | 99中文在线| 日韩精品影视 | 天天操天天射天天 | 日韩亚洲欧美中文字幕 | 91视频久久久久久 | 美女搞黄国产视频网站 | 亚洲国产午夜视频 | 99久久精品免费看国产免费软件 | 精品国产电影 | 国产中文字幕一区 | 天天色天天骑天天射 | www,黄视频 | 亚洲涩涩网站 | 欧美少妇bbwhd| 美女在线免费视频 | 在线观看视频国产 | 香蕉蜜桃视频 | 国产精品岛国久久久久久久久红粉 | 婷婷在线不卡 | 欧美资源| 一区二区三区精品在线 | av天天澡天天爽天天av | 丁香五月亚洲综合在线 | 91免费观看网站 | 国产人成一区二区三区影院 | 五月婷婷激情综合网 | 国产日韩欧美在线观看 | 久久99热精品 | 日韩在线观看视频免费 | 午夜精品电影 | 最新三级在线 | 亚洲永久国产精品 | 亚洲狠狠操 | 久久短视频 | 欧美精品少妇xxxxx喷水 | 福利电影久久 | 国产成人免费网站 | 国产一区二区成人 | 免费在线观看国产精品 | 美女在线免费观看视频 | 久久99影院| 国产成人免费在线观看 | 精品久久一级片 | 中文在线 | 91精品在线视频观看 | 欧美精品免费一区二区 | 视频直播国产精品 | 91精品国产91 | 最近中文字幕免费观看 | 色婷婷a| 一本一道久久a久久综合蜜桃 | 精品美女久久久久久免费 | 成人va视频 | 综合中文字幕 | 国产高清视频免费最新在线 | 国产手机在线播放 | 国产精品12 | 激情视频一区二区 | 日韩亚洲精品电影 | 欧美日韩高清一区二区 国产亚洲免费看 | 色婷婷激情 | 天天夜夜操 | 波多野结衣视频一区二区三区 | 97免费在线观看视频 | 欧美俄罗斯性视频 | 亚洲一区二区视频在线 | 特级毛片在线免费观看 | 91精品久久久久久久91蜜桃 | 久久综合影视 | 国产精品一区二区无线 | 91污在线观看 | 亚洲激情国产精品 | 最近免费观看的电影完整版 | 69av视频在线观看 | 最近最新中文字幕视频 | 天堂在线视频免费观看 | 久久精品99国产国产精 | www.玖玖玖 | 一级黄色片在线免费看 | 婷婷丁香激情综合 | 成人一级在线观看 | 久久伊人精品一区二区三区 | 在线观看免费中文字幕 | 亚州国产精品久久久 | 在线观看国产www | 日韩av中文字幕在线 | 久久99网 | 夜夜爽www| 操操色 | 久久精品国产亚洲aⅴ | 日韩美视频| 久久国产视频网站 | 91九色视频导航 | 国产乱对白刺激视频在线观看女王 | 日本久久久精品视频 | 欧美一级特黄aaaaaa大片在线观看 | 久久综合久久综合久久综合 | 黄色亚洲大片免费在线观看 | 国产精品不卡在线播放 | av在线电影网站 | 亚洲欧美乱综合图片区小说区 | 日韩精品一区二区在线 | 在线之家免费在线观看电影 | 国产精品久久久网站 | 亚洲va天堂va欧美ⅴa在线 | 婷婷成人亚洲综合国产xv88 | 欧美无极色| 在线观看视频免费播放 | 九九九九色| 毛片基地黄久久久久久天堂 | va视频在线观看 | 天天搞天天干 | 在线视频免费观看 | 久久久色| 免费a现在观看 | 中文字幕在线视频一区二区 | 99亚洲天堂 | 综合久久久久 | 久久久久国产一区二区三区四区 | 91亚洲精品国偷拍 | 色狠狠操| 欧美午夜a | 国色天香第二季 | 高潮久久久久久久久 | 国产亚洲精品成人 | 人人舔人人爱 | 碰碰影院| 国产精品成人品 | 国产视频每日更新 | 国产精品99久久久久久久久久久久 | 很黄很色很污的网站 | 欧美韩国日本在线 | 干亚洲少妇 | 五月婷婷中文网 | 久久久精品一区二区三区 | 你操综合 | 91福利影院在线观看 | 久久在线| 国产日韩欧美综合在线 | 久久久伦理 | 婷婷久久国产 | 中文字幕影片免费在线观看 | 亚洲综合在线播放 | 欧美激情视频在线免费观看 | 日韩欧美电影在线观看 | 天天综合网 天天 | a级国产乱理伦片在线观看 亚洲3级 | av一级免费| 狠狠狠干| 亚洲国产精品久久久久婷婷884 | 久久精品视频在线免费观看 | 国产在线观看 | 色一色在线| 日本黄色a级大片 | 亚洲成人精品 | 狠狠色综合网站久久久久久久 | 狠狠久久综合 | 探花视频在线观看免费 | 国产一区在线播放 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 色婷婷狠狠操 | 999毛片| 久草爱| 久久精彩免费视频 | 欧美日韩性视频 | av爱干 | 五月天久久久久 | 中文字幕在线视频一区二区 | 国产精品va | 色婷婷久久久综合中文字幕 | 免费观看日韩av | 日产中文字幕 | 国产一区二区精品91 | h动漫中文字幕 | 91久久电影| 91中文字幕在线 | 久久视频 | 99国产精品久久久久老师 | av不卡中文字幕 | 成人99免费视频 | 99婷婷 | 在线视频一二区 | 日韩久久精品一区二区三区 | 天天干天天操天天做 | 一区二区三区四区五区在线 | 欧美精品久久久久久久久久 | 久草免费在线视频 | www.色婷婷 | 99久久婷婷国产精品综合 | 日本精品久久久久 | 国产精品毛片网 | 色射爱| 日韩一二区在线观看 | 国产日韩欧美在线 | 久久久久久久久久久久久久av | 黄色av播放 | 亚洲美女在线国产 | av在线免费观看不卡 | 欧美吞精 | 国产一区二区久久 | 色偷偷88888欧美精品久久久 | a√天堂中文在线 | 久久久久久久网 | 蜜臀久久99静品久久久久久 | 丁香六月激情婷婷 | 99精品在线免费视频 | 国产97免费 | 日韩在线观看视频一区二区三区 | 午夜电影久久久 | 最新精品视频在线 | 激情丁香婷婷 | 五月天婷婷在线播放 | 日韩成片 | 婷婷在线视频观看 | 国产精品理论片在线播放 | 国产在线视频一区二区 | 国产福利精品在线观看 | 国产手机视频在线播放 | 亚洲国产精品久久 | 久久久免费毛片 | 午夜av在线电影 | 婷五月天激情 | 日韩午夜在线观看 | 亚洲aⅴ在线观看 | 中文字幕美女免费在线 | 国产黄网在线 | 91视频免费看| 久久成人毛片 | 不卡的一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 91爱爱中文字幕 | 欧美aa在线 | 欧美精品久久久久久久久久 | 国产精品热视频 | av电影中文字幕 | 一级特黄av | 美女免费黄视频网站 | 日韩av电影国产 | 另类老妇性bbwbbw高清 | 成 人 黄 色 视频播放1 | 超碰在线公开 | 超碰免费观看 | 91视频免费观看 | 日韩av在线影视 | 精品亚洲国产视频 | 国产91亚洲精品 | 欧美综合在线观看 | 日日夜夜干 | 91在线精品视频 | 999成人| 亚洲伦理电影在线 | 天天插伊人 | 天天色天天上天天操 | 欧美专区日韩专区 | .国产精品成人自产拍在线观看6 | 欧美日韩一区二区三区在线免费观看 | 4438全国亚洲精品观看视频 | 麻豆视频入口 | 精品国产中文字幕 | 亚洲伦理一区 | 我要色综合天天 | 国产精品99久久久精品免费观看 | 在线天堂日本 | 欧美日韩精 | 国产精品久久久久久久久岛 | 天天综合网久久 | 精品国产色 | 干干夜夜| 亚洲免费小视频 | 久久久精品免费看 | 国产最新在线 | 成av在线 | 色综合久久久久久中文网 | 91丨九色丨91啦蝌蚪老版 | av先锋影音少妇 | 黄色网址在线播放 | 天堂在线一区二区 | 天天射综合网视频 | 国产永久网站 | 精品国自产在线观看 | 丝袜美腿在线播放 | 亚州性色| 国产高潮久久 | 欧美小视频在线观看 | www.人人草 | 伊人五月婷 | av电影不卡在线 | 狠狠色丁香九九婷婷综合五月 | 国产a级片免费观看 | 99久久精品免费看国产免费软件 | 国产在线一卡 | 亚洲精品国产精品国产 | a视频在线| 亚洲日本va午夜在线影院 | 97超碰成人 | 久福利 | 天天色天天综合 | 亚洲高清视频一区二区三区 | 日日干天天射 | 999成人| 免费av网站观看 | 久久久精品国产免费观看一区二区 | 久久国产美女视频 | 久久精品久久久精品美女 | 99免费在线观看 | 久久精品视频免费 | 欧美成人在线免费 | 成人免费视频网 | 在线看小早川怜子av | 午夜av网站 | 嫩草伊人久久精品少妇av | 天天艹天天干天天 | 日韩中文字幕在线观看 | 日韩网站中文字幕 | 免费av大片| 一本—道久久a久久精品蜜桃 | 伊人网av| 中文字幕av免费 | 国产一二三四在线视频 | 国产一区欧美在线 | 国产精品国产亚洲精品看不卡15 | 开心激情婷婷 | av九九九 | 成人一级片在线观看 | 午夜电影一区 | 免费视频网 | 久久久精品电影 | 欧美9999| 免费观看91| 久久精品导航 | 天堂av免费在线 | 中文字幕婷婷 | 最近最新mv字幕免费观看 | 国产亚洲久一区二区 | av黄色国产 | 久久大片网站 | 天天色天天综合 | 亚洲区另类春色综合小说 | 天天干天天操天天射 | 91在线文字幕 | 中文字幕在线观看一区二区三区 | 国模一区二区三区四区 | 黄色精品国产 | 久久另类小说 | 女人18毛片a级毛片一区二区 | 九九在线精品视频 | 人人干人人搞 | 天堂av在线免费 | 91香蕉视频污在线 | 天天天天爱天天躁 | 91麻豆传媒 | 麻豆视频在线 | 日本中文字幕在线看 | 精品人人人 | 在线免费视 | 国产97色 | 中文字幕频道 | 五月婷婷,六月丁香 | 亚洲午夜精品久久久 | 久久久久久久久久久影院 | 成年人app网址 | 人人爱爱人人 | 精品国产99国产精品 | 国产小视频在线免费观看 | 国产精品成人在线 | 91视频啪| 国产精品 久久 | 玖玖视频免费在线 | 国产精品午夜久久久久久99热 | 韩国av免费在线 | 伊人资源视频在线 | 日韩免费视频观看 | 亚洲涩综合 | 午夜精品一区二区三区视频免费看 |