![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机图形
hunter_wyh
小白小白,梦想是大白!
展开
-
Learn OpenGL - 名词解析
基本名词VBOVAOEBO渲染管线ShadervertextShaderfragmentShaderTexture坐标系统局部空间世界空间观察空间裁剪空间屏幕空间为了将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标。下一步是将局部坐标变换为世界空间坐标,世界空间坐标是原创 2021-08-11 00:01:25 · 314 阅读 · 0 评论 -
Learn OpenGL - Texture 调整位置
texture(texture2, vec2(1.0 - TexCoord.x, TexCoord.y))可以让纹理x坐标翻转#version 330 coreout vec4 FragColor;in vec3 ourColor;in vec2 TexCoord;uniform sampler2D texture1;uniform sampler2D texture2;void main(){ FragColor = mix(texture(texture1, TexCoor原创 2021-08-10 23:08:54 · 240 阅读 · 0 评论 -
Learn OpenGL - Texture 混合
vs#version 330 corelayout (location = 0) in vec3 aPos;layout (location = 1) in vec3 aColor;layout (location = 2) in vec2 aTexCoord;out vec3 ourColor;out vec2 TexCoord;void main(){ gl_Position = vec4(aPos, 1.0); ourColor = aColor; TexCoord = ve原创 2021-08-10 22:44:55 · 186 阅读 · 0 评论 -
Learn OpenGL - Shader变灰
const char *fragmentShaderSource = "#version 330 core\n" "out vec4 FragColor;\n" "in vec3 ourColor;\n" "in vec2 TexCoord;\n" "uniform sampler2D mytexture;\n" "void main()\n" "{\n" " vec4 col = texture2D(mytexture, TexCoord);\n" " float grey原创 2021-08-10 00:07:02 · 191 阅读 · 0 评论 -
Learn OpenGL - 使用纹理
#include <iostream>#include <cmath>// GLEW#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h>// std#define STB_IMAGE_IMPLEMENTATION#include "stb_image.h"void framebuffer_size_callback(GLFWwindow* window, int width, int h原创 2021-08-08 23:28:07 · 135 阅读 · 0 评论 -
Learn OpenGL - 三角形规则运动
根据uuniform 进行运动const char *vertexShaderSource = "#version 330 core\n" "layout (location = 0) in vec3 aPos;\n" "layout (location = 1) in vec3 aColor;\n" "uniform vec3 deltaPos;\n" "out vec4 vertexColor;\n" "void main()\n" "{\n" " gl_Positio原创 2021-08-08 15:35:34 · 186 阅读 · 0 评论 -
Learn OpenGL - 修改顶点着色器让三角形上下颠倒
其实只要y坐标*-1就行#version 330 corelayout (location = 0) in vec3 aPos;layout (location = 1) in vec3 aColor;out vec3 ourColor;void main(){ gl_Position = vec4(aPos.x, -aPos.y, aPos.z, 1.0); // just add a - to the y position ourColor = aColor;}例子原创 2021-08-08 13:25:09 · 465 阅读 · 0 评论 -
Learn OpenGL - 使用更多的数据(位置+颜色)
给顶点数据增加更多的数据,如位置+颜色修改顶点数据修改顶点着色器修改片段着色器分两次给位置、颜色分配不同的VAO位置glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);glEnableVertexAttribArray(0);glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3*sizeof原创 2021-08-08 11:51:41 · 224 阅读 · 0 评论 -
Learn OpenGL - 使用Uniform从CPU向GPU着色器发送数据
#include <iostream>#include <cmath>// GLEW#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h>void framebuffer_size_callback(GLFWwindow* window, int width, int height);void processInput(GLFWwindow *window);int main(void){原创 2021-08-08 01:52:19 · 319 阅读 · 0 评论 -
Learn OpenGL - 从顶点着色器向片段着色器发送数据
在顶点着色器中设置了颜色,传递到片段着色器中#include <iostream>#include <cmath>// GLEW#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h>void framebuffer_size_callback(GLFWwindow* window, int width, int height);void processInput(GLFWwindow *win原创 2021-08-08 01:38:08 · 361 阅读 · 0 评论 -
Learn OpenGL - 分别给两个三角形使用不同Shader
#include <iostream>#include <cmath>// GLEW#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h>void framebuffer_size_callback(GLFWwindow* window, int width, int height);void processInput(GLFWwindow *window);int main(void){原创 2021-08-08 01:22:59 · 211 阅读 · 0 评论 -
Learn OpenGL - 创建相同的两个三角形(使用EBO)
float vertices[] = { -0.5f, 0.0f, 0.0f, // left 0.0f, 0.0f, 0.0f, // right -0.25f, 0.3f, 0.0f, // top 0.5f, 0.0f, 0.0f, // left 0.25f, -0.3f, 0.0f, // top }; unsigned int indices[] = { 0, 1, 2, // 第一个三角形 1, 3, 4 // 第二个三角形原创 2021-08-07 01:26:15 · 141 阅读 · 0 评论 -
Learn OpenGL - 创建四方形(使用EBO)
#include <iostream>#include <cmath>// GLEW#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h>void framebuffer_size_callback(GLFWwindow* window, int width, int height);void processInput(GLFWwindow *window);int main(void){原创 2021-08-07 01:20:50 · 164 阅读 · 0 评论 -
Learn OpenGL - 创建相同的两个三角形(使用VAO&VBO)
#include <iostream>#include <cmath>// GLEW#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h>void framebuffer_size_callback(GLFWwindow* window, int width, int height);void processInput(GLFWwindow *window);int main(void){原创 2021-08-07 01:07:48 · 297 阅读 · 0 评论 -
Learn OpenGL - 创建三角形 (使用VBO&VAO)
#include <iostream>#include <cmath>// GLEW#define GLEW_STATIC#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h>void framebuffer_size_callback(GLFWwindow* window, int width, int height);void processInput(GLFWwindow *window原创 2021-08-06 00:49:53 · 173 阅读 · 0 评论 -
Learn OpenGL - 使用GLEW
glew是OpenGL的图形接口,类似的有glut、glad去官网下载文件解压文件到本地我下载到的是glew2.1,解压到项目目录中把目录名glew-2.1.0 改为 GLEW (方便以后升级版本)添加到工程包含头文件:添加glew32s.lib所在目录:链接静态库glew32s.lib:增加使用宏定义增加宏GLEW_STATIC 不然用不了...原创 2021-08-03 00:33:36 · 344 阅读 · 0 评论 -
Learn OpenGL - 画一个三角形
建立在上一节的准备上这次我们只需要在主循环增加以下几行就可以画出一个三角形 glBegin(GL_TRIANGLES); glVertex2f(-0.5f, -0.5f); glVertex2f(0.0f, 0.5f); glVertex2f(0.5f, -0.5f); glEnd();原创 2021-08-02 01:59:18 · 85 阅读 · 0 评论 -
Learn OpenGL - 搭建项目
使用VS 新建空项目我用的是2017 创建一个空的测试文件 测试能正常运行C++按F5有正常输出下载GLFW根据你生成的应用程序的目标平台选择一个编译好的二进制文件就好。我这里选择32位。(当然你也可以使用源码进行编译。)下载后解压是这样的。选择你自己的版本,我是用2017。将GLFW文件保存到项目里创建一个目录Dependencies\GLFW 保存 上面步骤解压得到的include 和 lib-vc2017将GLFW 包含链接到工程里包含:链接:..原创 2021-08-02 01:39:46 · 106 阅读 · 0 评论 -
LearnOpenGL-第一个窗口
LearnOpenGL-第一个窗口一 创建项目1.新建项目2.引入OpenGL相关库3.设置链接器4.工程引入glad.c二 开始写代码二 结果图示一 创建项目1.新建项目你可以创建一个cpp来运行一下main2.引入OpenGL相关库3.设置链接器4.工程引入glad.c二 开始写代码参考例子// 因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对...原创 2018-10-14 19:20:52 · 311 阅读 · 0 评论 -
LearnOpenGL-你好, 三角形
LearnOpenGL-你好, 三角形提前知识坐标着色器顶点缓冲数据顶点数组对象代码-三角形三角形效果图你好矩形索引缓冲对象代码-矩形矩形效果图提前知识顶点数组对象:Vertex Array Object,VAO顶点缓冲对象:Vertex Buffer Object,VBO索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO...原创 2018-10-14 21:45:47 · 530 阅读 · 0 评论 -
LearnOpenGL_抗锯齿
抗锯齿锯齿边缘(Jagged Edges)的产生和光栅器将顶点数据转化为片段的方式有关。清楚看见形成边缘的像素称之为走样(Aliasing)。有很多种抗锯齿(Anti-aliasing,也被称为反走样)的技术能够帮助我们缓解这种现象,从而产生更平滑的边缘。最开始的抗锯齿方式-超采样抗锯齿(Super Sample Anti-aliasing, SSAA)的技术,它会使用比正常分辨...原创 2019-03-02 16:36:52 · 231 阅读 · 0 评论 -
glfw编程指南
窗口对象所述GLFWwindow对象封装二者的窗口和上下文。它们是使用glfwCreateWindow创建的,并使用glfwDestroyWindow或glfwTerminate(如果有的话)进行销毁。由于窗口和上下文是不可分离地链接的,因此对象指针用作上下文和窗口句柄。要查看提供给各种窗口相关回调的事件流,请运行events测试程序。窗口创建使用glfwCreateWindow创...翻译 2019-08-20 22:20:51 · 8117 阅读 · 0 评论 -
LearnOpenGL-变换总结
LearnOpenGL-变换总结向量向量:有方向和长度向量基本运算:向量与标量运算、向量取反、向量加减向量长度:勾股定理单位向量:它的长度是1;向量的标准化向量相乘:点乘v¯⋅k¯=||v¯||⋅||k¯||⋅cosθ当v¯v¯和k¯k¯都是单位向量,它们的长度会等于1。于是有v¯⋅k¯=1⋅1⋅cosθ=cosθ使用点乘可以很容易测试两个向量是否正交或平行计算方式:点...原创 2019-09-03 17:37:11 · 136 阅读 · 0 评论 -
OpenGL笔记之一 开学
OpenGL核心模式与立即渲染模式扩展状态机对象附加资源OpenGLOpenGL本身并不是一个API,==它仅仅是一个由Khronos组织制定并维护的规范==。OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现的,将由OpenGL库的开发者自行决定。(这里开发者是指编写OpenGL库的人,实际的OpenGL库的开发者...原创 2018-08-31 20:27:29 · 158 阅读 · 0 评论