• 大小: 112KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-07-04
  • 语言: 其他
  • 标签:

资源简介

OGLWSADQE进行旋转缩放平移简单操作 分析: 放大: 当摄像机沿Z轴靠近物体,则物体显示会变大,反之则小 左右平移: 摄像机往左移,则看到的物体往右移 旋转: 以相机到物体的距离为半径进行旋转 当旋转后,再平移,比如相机到了b位置,再平移,以绿线为向量进行平移. 已知相机到物体的向量,已知相机的向上up向量0,1,0,可以叉乘得到垂直的绿线向量,再以此向量进行平移即可. 旋转后的放大缩小,则以相机到物体的向量进行平移. 代码如下: 定义两个全局变量: glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f); // 相机位置 glm::vec

资源截图

代码片段和文件信息

#define GLEW_STATIC
#include 

#include 

#include 
#include 
#include 

#include 

#include “Shader.h“

#pragma comment(lib “SOIL.lib“)

#pragma comment (lib “opengl32.lib“)
#pragma comment (lib “glew32s.lib“)
#pragma comment (lib “glfw3.lib“) 
#pragma comment (lib “glfw3dll.lib“) 
#pragma comment (lib “glew32mxs.lib“)
#pragma comment (lib “assimp.lib“)

#define  WIDTH 800
#define  HEIGH 600


GLfloat g_nX = 0;
GLfloat g_nY = 0;
GLfloat g_nZ = 0;

glm::vec3 cameraPos = glm::vec3(0.0f 0.0f 3.0f);
glm::vec3 cameraTarg = glm::vec3(0.0f 0.0f 0.0f);

//glm::mat4 view; // 视图矩阵
GLfloat fRotateAngle = 0.0f;

void keyFun(GLFWwindow* pWnd int nKey int nScanCode int nAction int nMode);

int main()
{
glfwInit();
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);

GLFWwindow* pWnd = glfwCreateWindow(WIDTH HEIGH “OGL Geometry Shader“ nullptr nullptr);
glfwMakeContextCurrent(pWnd);

glfwSetKeyCallback(pWnd keyFun);

glewExperimental = GL_TRUE;

glewInit();

glViewport(0 0 WIDTH HEIGH);

GLfloat fPoint[] = {
0.0f 0.0f 0.0f 1.0f 0.0f 0.0f
0.5f -0.6f 0.0f 0.0f 1.0f 0.0f
0.5f 0.5f 0.0f 0.0f 0.0f 1.0f
-0.5f 0.6f 0.0f 0.0f 1.0f 1.0f
-0.2f -0.5f 0.0f 0.0f 0.4f 1.0f
- 0.8f 0.3f 0.0f 1.0f 0.30f 1.0f };

GLuint nVAO nVBO;
glGenVertexArrays(1 &nVAO);
glBindVertexArray(nVAO);
{
glGenBuffers(1 &nVBO);
glBindBuffer(GL_ARRAY_BUFFER nVBO);
{
glBufferData(GL_ARRAY_BUFFER sizeof(fPoint) fPoint GL_STATIC_DRAW);

glEnableVertexAttribArray(0); // vertex
glVertexAttribPointer(0 3 GL_FLOAT GL_FALSE 6* sizeof(GLfloat) (GLvoid*)0);

glEnableVertexAttribArray(1); // color
glVertexAttribPointer(1 3 GL_FLOAT GL_FALSE 6* sizeof(GLfloat) (GLvoid*)(3 * sizeof(GL_FLOAT)));
}
glBindBuffer(GL_ARRAY_BUFFER 0);
}
glBindVertexArray(0);

glEnable(GL_PROGRAM_POINT_SIZE);

//Shader shader(“./Shader/vertex.vx“ “./Shader/geo.geo“ “./Shader/frag.fg“);
Shader shader(“./Shader/vertex.vx“ “./Shader/frag.fg“);
shader.userShaderProg();

glm::mat4 model; // 模型矩阵
glm::mat4 view; // 视图矩阵
// 后移(观察点与物体在同一平面)  否则无法显示物体
view = glm::translate(view glm::vec3(0.0f 0.0f -3.0f));

// 投影矩阵 视角 宽高比 近  远截面
glm::mat4 proj = glm::perspective(45.0f GLfloat(WIDTH / HEIGH) 0.1f 100.0f);

// 获取Shader中 uniform 变量位置
GLint nModelLoc = glGetUniformLocation(shader.getProg() “model“);
GLint nViewLoc = glGetUniformLocation(shader.getProg() “view“);
GLint nProjLoc = glGetUniformLocation(shader.getProg() “projection“);
// 将矩阵传至Shader
glUniformMatrix4fv(nModelLoc 1 GL_FALSE glm::value_ptr(model));
glUnifo

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1333  2017-03-01 16:50  OGLGeometryShader.sln

     文件       5892  2017-03-04 00:14  OGLGeometryShader\main.cpp

     文件       7496  2017-03-01 17:03  OGLGeometryShader\OGLGeometryShader.vcxproj

     文件       1154  2017-03-01 17:03  OGLGeometryShader\OGLGeometryShader.vcxproj.filters

     文件        143  2017-03-03 10:33  OGLGeometryShader\Shader\frag.fg

     文件        527  2017-03-02 15:53  OGLGeometryShader\Shader\geo.geo

     文件        383  2017-03-02 17:22  OGLGeometryShader\Shader\vertex.vx

     文件       6071  2017-03-02 15:14  OGLGeometryShader\Shader.cpp

     文件        498  2017-03-02 15:57  OGLGeometryShader\Shader.h

     目录          0  2017-03-03 10:33  OGLGeometryShader\Shader

     目录          0  2017-03-04 00:16  OGLGeometryShader

     文件      51604  2017-03-04 00:07  2017-03-04_000734.jpg

     文件      45175  2017-03-04 00:18  Drawing1.dwg

     文件      58072  2017-03-04 00:03  ogl.gif

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

               178348                    14


评论

共有 条评论

相关资源