
opengl
angry ant
GISer一名,希望志同道合的朋友有问题一起来讨论,相互学习
展开
-
2.窗体的创建及渲染循环
前面讲过了glfw封装了这一基础过程,因此本节只是API的基础使用方法,不做深入了解 1.窗体创建 GLFWwindow* Util::InitWindow() { //初始化glfw,GLFW是一个专门针对OpenGL的C语言库, //它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入 glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3); //OpenGL主版本号 gl原创 2020-11-16 14:04:28 · 320 阅读 · 0 评论 -
1.环境搭建
1.什么是OpenGL OpenGL是一个由Khronos组织制定并维护的规范(Specification),规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者(也就是显卡厂商)自行决定。 2.GLFW GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入。GLFW专门为OpenGL的开发完成了一些基础工作。获取的..原创 2020-11-16 13:46:59 · 260 阅读 · 0 评论 -
7.矩阵变换
1.使用OpenGL Mathematics,下载GLM后,将文件路径加入包含路径(不需要编译和链接) 2.平移、旋转、缩放矩阵 glm::vec4 vec(1.0f,0.0f,0.0f,1.0f); //默认是一个单位矩阵(9.9版本之后的GLM应改为glm::mat4 trans(1.0f);) glm::mat4 trans; //缩放 trans = glm::scale(trans,glm::vec3(0.5,0.5,0.5)); //旋转 trans = glm::rotate(trans原创 2020-09-07 15:57:18 · 412 阅读 · 0 评论 -
6.纹理
1.纹理采样:根据纹理坐标获取像素值 2.纹理环绕:当纹理坐标超出默认范围时纹理的重复方式,OpenGL提供了以下几种方式 对纹理环绕方式进行设置: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT); float borderColor[] = { 1.0f, 1.原创 2020-09-07 15:57:46 · 171 阅读 · 0 评论 -
5.Shader
1.使用in、out关键字声明shader中的输入和输出变量 为输入变量传值有两种方式: (1)在着色器中声明变量时使用location = t关键字指定顶点属性位置(顶点着色器需要提供一个额外的layout标识),在程序中通过t进行赋值 (2)在程序中使用glGetAttribLocation(变量名)获取变量的地址,然后再进行赋值 2.在顶点着色器和片元着色器之间传值: 如果我们打算从一个着色器向另一个着色器发送数据,在发送方着色器声明一个输出变...原创 2020-09-06 09:28:55 · 187 阅读 · 0 评论 -
3.VAO,VBO,EBO
1.缓冲区的使用: //创建顶点缓冲区 GLuint VBO,VAO,EBO; glGenVertexArrays(1,&VAO); glGenBuffers(1,&VBO); //该函数用于生成缓冲区对象名称 glGenBuffers(1,&EBO); //绑定缓冲区 glBindVertexArray(VAO); glBindBuffer(GL_ARRAY_BUFF原创 2020-09-06 09:27:19 · 274 阅读 · 0 评论