OpenGL3.3+GLFW+GLEW+GLM实现小人行走动画 您所在的位置:网站首页 opengl机器人简单运动 OpenGL3.3+GLFW+GLEW+GLM实现小人行走动画

OpenGL3.3+GLFW+GLEW+GLM实现小人行走动画

2024-01-27 22:22| 来源: 网络整理| 查看: 265

现在在网上找比较系统的教程基本都是旧版OpenGL,都是基于glut的,然而这个库已经是上个世纪的了……新版的OpenGL3.3及以上的教程,强烈推荐以下这两个:

openGL tutorial http://www.opengl-tutorial.org/cn/

learn openGL https://learnopengl-cn.github.io

两份教程一个侧重理解,一个侧重代码实现,可以穿插着一起看。

另外非常感谢xuhongxu同学。

本文原发于这里,是图形学课的一次实验。

1、环境

OpenGL 3.3

GLFW,用于创建窗口和处理用户输入

GLEW,用于确定OpenGL函数的具体实现

GLM,图像相关的数学计算工具库

OSX 10.10

2、窗口和库的初始化

GLFW窗口的初始化:

if(!glfwInit()) { return -1; } GLFWwindow* window; glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//OpenGL版本为3 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//最低兼容版本 glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//使用新版本的核心模式 glfwWindowHint(GLFW_RESIZABLE , GL_FALSE);//窗口尺寸不可变 glfwWindowHint(GLFW_SAMPLES, 4); window = glfwCreateWindow(WIDTH, HEIGHT, "Hello World", NULL, NULL); if (!window) { glfwTerminate(); return -1; } glfwMakeContextCurrent(window);//设为当前窗口 glfwSetKeyCallback(window, key_callback);

GLEW库的初始化:

glewExperimental = GL_TRUE; if (glewInit() != GLEW_OK) { glfwTerminate(); return -1; } 3、着色器

OpenGL3.3及以上版本不再使用立即渲染模式,采用核心模式,着色器使用的语言是GLSL。核心模式的工作流程为如下图所示图形渲染管线,处理过程中一步步将3D的图形渲染成屏幕上显示的2D图像。在实验中,需要定义自己的顶点着色器(vertex shader)和片段着色器(fragment shader)。

顶点着色器定义如下:

#version 330 core //第一层缓冲,编号为0,从C++输入数据,顶点位置 layout(location = 0) in vec3 vertexPosition_modelspace; //第二层缓冲,编号为1,从C++输入数据,顶点颜色 layout(location = 1) in vec3 vertexColor; //输出数据, 给片段着色器 out vec4 fragmentColor; //全局数据,MVP矩阵 uniform mat4 MVP; void main(


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有