
计算机图形学
文章平均质量分 79
林 汐☜
这个作者很懒,什么都没留下…
展开
-
计算机图形学(三)——画一个矩形
画一个矩形main.cpp#include <iostream>// GLEW#define GLEW_STATIC#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h>#include "Shader.h"#include"SOIL2/SOIL2.h"#include"SOIL2/stb_image.h"const GLint WIDTH = 800, HEIGHT = 600;int m原创 2020-10-11 11:36:44 · 1807 阅读 · 0 评论 -
计算机图形学练习(四)——画球
以线框模式画一个球,可由鼠标键盘控制ball.cpp#include <iostream>// GLEW#define GLEW_STATIC#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h>//glm#include "glm/glm.hpp"#include "glm/gtc/matrix_transform.hpp"#include "glm/gtc/type_ptr.hpp"#incl原创 2020-11-28 15:34:06 · 1517 阅读 · 0 评论 -
计算机图形学练习(三)——画一个可以由键盘控制的球
画一个可以由键盘控制的球第一步:计算z坐标球面绘制,首先按z方向,切分成多节,每节就是一个圆周;就是上图的1截出来的部分就是2所示的圆周。截出的圆周有一个高,就是z-坐标;圆周的高,其实就是这个圆周与圆心形成的锥形的角度决定了圆周的截断高度。这样可以轻松计算出第二步:等高截的圆周的半径r这个圆周半径也容易计算第三步:计算圆周上的x,y圆周半径确定的情况下,x,y容易计算链接:https://www.jianshu.com/p/48a4b3f3d51e来源:简书#include <原创 2020-11-15 17:47:42 · 776 阅读 · 0 评论 -
计算机图形学练习(二)——正方体绕轴旋转
正方体绕轴旋转只要在旋转立方体的代码上做稍微的改动即可旋转立方体本文将立方体立起来旋转,关键在于初始偏转角度的计算transform = glm::rotate(transform, glm::radians(45.0f) * static_cast<GLfloat>(glfwGetTime()), glm::vec3(0.0f, 1.0f, 0.0f));transform = glm::rotate(transform, (glm::f32)acos(1 / sqrt(3)), g原创 2020-11-15 17:01:32 · 1909 阅读 · 0 评论 -
计算机图形学练习(一)——两张图片渐变交替
两张图片渐变交替想要实现两张图片的渐变交替,需要用到以时间为参数的sin函数来实现,此处的实现方式为sin(timeValue),可以让image1和image2渐变交替。main.cpp#include <iostream>#define GLEW_STATIC#include <GL/glew.h>#include <GLFW/glfw3.h>#include "Shader.h"#include "SOIL2/SOIL2.h" #include原创 2020-11-15 16:47:14 · 631 阅读 · 0 评论 -
计算机图形学(八)——添加一个光源照射立方体
在第(七)节的基础上给正方体添加一个旋转的照射光源现实世界的光照是极其复杂的,而且会受到诸多因素的影响,这是我们有限的计算能力所无法模拟的。因此OpenGL的光照使用的是简化的模型,对现实的情况进行近似,这样处理起来会更容易一些,而且看起来也差不多一样。这些光照模型都是基于我们对光的物理特性的理解。其中一个模型被称为冯氏光照模型(Phong Lighting Model)。冯氏光照模型的主要结构由3个分量组成:环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。下面这张图展示了原创 2020-10-29 19:45:19 · 1568 阅读 · 0 评论 -
计算机图形学(七)——画一个可以由鼠标键盘控制的立方体
画一个可以由鼠标键盘控制的立方体本节将会再OpenGL中配置一个摄像机,让正方体能够再3D场景中自由移动,同时也会讨论鼠标和键盘输入。OpenGL本身没有相机的概念,我们可以通过把物体往相反的方向移动来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动。首先需要修改core.vs#version 330 corelayout(location = 0) in vec3 position;layout (location = 1) in vec3 color;uniform mat4 tra原创 2020-10-17 16:05:42 · 1512 阅读 · 1 评论 -
计算机图形学(六)——画一个旋转的立方体
画一个会动的立方体//画立方体#include <iostream>#define GLEW_STATIC#include"Shader.h"#include"Camera.h"#include<GL/glew.h>#include<GLFW/glfw3.h>#include<glm/glm.hpp>#include<glm/gtc/matrix_transform.hpp>#include<glm/gtc/type原创 2020-10-17 14:41:07 · 2075 阅读 · 1 评论 -
计算机图形学(五)——纹理
纹理在res文件夹中新建了一个picture文件夹,把图片image.jpg放入picture文件夹。main.cpp#include <iostream>// GLEW#define GLEW_STATIC#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h>#include "Shader.h"#include"SOIL2/SOIL2.h"#include"SOIL2/stb_image.h原创 2020-09-27 11:30:13 · 565 阅读 · 0 评论 -
计算机图形学(四)——画一个彩色的三角形
画一个彩色的三角形要想画一个彩色三角形只要在原来的代码中加上表示颜色的信息,主要区别为以下几点:(1)GLfloat vertices[]={}中新增了颜色信息(2)下列几处有改动三角形每个顶点处有六个信息,所以要把原来的3 * sizeof(GLfloat)改成6 * sizeof(GLfloat),(GLvoid*)0表示颜色信息,改成(GLvoid*)(3*sizeof(GLfloat)),因为只有三个表示颜色。 glVertexAttribPointer(0, 3, GL_FLOAT, G原创 2020-09-26 21:09:01 · 903 阅读 · 0 评论 -
计算机图形学(二)——画一个三角形2.0
把着色器放到.vs和.fs文件中,用Shader.h来做渲染画一个三角形也是画一个三角形,只是和上一篇实现的方式不同core.vs#version 330 corelayout(location = 0) in vec3 position;layout(location = 1) in vec3 color;out vec3 ourColor;void main(){ gl_Position = vec4(position.x, position.y, position.z, 1.0f原创 2020-09-24 23:17:39 · 916 阅读 · 0 评论 -
计算机图形学(二)——画一个三角形1.0
画一个三角形不用Shader头文件的版本#include <iostream>#define GLEW_STATIC#include <GL/glew.h>#include<GLFW/glfw3.h>const GLint WIDTH = 800, HEIGHT = 600;//新建一个窗口,窗口的宽800, 高600//顶点着色器,一定有输出,是顶点的坐标信息//顶点按逆时针顺序来画const GLchar* vertexShaderSource =原创 2020-09-24 22:38:45 · 615 阅读 · 0 评论 -
计算机图形学(一)——创建一个窗口
创建一个窗口 大三上刚接触计算机图形学,前几节课上的是网课,学的似懂非懂,线下上课老师又重新讲述了一遍,第一节课是配置GLEW, GLFW, SOIL2等环境,跟着网上的教程一步步来,比较容易上手。 首先需要创建一个窗口,就像是一张画画的纸,接下来的代码是上课内容的记录,内容可能不全面,欢迎大家批评指正。#include <iostream>#define GLEW_STATIC#include<GL/glew.h>#include<GLFW/glfw原创 2020-09-24 21:51:14 · 624 阅读 · 0 评论