
cg
文章平均质量分 78
wodownload2
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
opengl中的矩阵和向量
如下代码:glm::mat4 sphereModel;sphereModel = glm::translate(sphereModel, glm::vec3(0, 0, -10.0f));输出:_cprintf("%f %f %f %f\n", sphereModel[0][0], sphereModel[1][0], sphereModel[2][0], sphereModel[3][0...原创 2019-04-18 14:16:40 · 1337 阅读 · 0 评论 -
opengl从画三角形到画一个立方体(一)
主要内容: 画一个立方体,然后设计一个camera类。本文涉及的内容有点多,请读者耐心的看下去,这里不仅有软件的配置,还有shader的应用,以及摄像机类的编写,还包括一些矩阵变换之类的,闲话少说,具体内容一步一步展开。按照我们的思路,首先需要的是数据,顶点的数据,画一个立方体,需要八个顶点的数据。一个正方体如何画出来,需要一个面一个面的哈,那么正方体有6个面,而每个面呢?是一个正方形,我们把正方原创 2017-09-30 09:33:43 · 24459 阅读 · 12 评论 -
视图矩阵的推导(2)
坐标系如下: 如图所示,我们定义摄像机的位置为:(-2,1,2) 目标点位置为(-1,2,3)。然后我们明确一下,uvn坐标系统的uvn到底是什么? u——右向量,相当于+x v——上向量,相当于+y n——朝向向量,相当于+zu向量:这里是通过y叉乘n得到,y向量为(0,1,0),n向量为目标点-减去摄像机的位置点,即(-1,2,3)-(-2,1,2)=(1,1,1),经过叉乘我们可以得原创 2017-09-28 23:57:22 · 1283 阅读 · 0 评论 -
视图矩阵的推导(1)
参考网址:http://blog.csdn.net/popy007/article/details/5120158视图矩阵处于MVP矩阵的中v。一个模型的坐标经过了V之后,就得到了世界坐标。而得到世界坐标之后,再经过V矩阵的变换就得到摄像机(视觉/眼睛)空间中的坐标。再经过P矩阵变换得到,裁剪空间中的坐标。这里讲解一下V矩阵的推导。1、最常见的基 3D空间中最常见的基为: v1=(1,0,0)原创 2017-09-28 14:20:39 · 2413 阅读 · 2 评论 -
assimpt模型导入配置
俗话说万事开头难,还有一句什么来着,工欲善其事必先利其器,还是老老实实将环境配置通了再说吧。 1、cmake工具 这个玩意呢,是用来将源码转成.sln工程,然后我们再打开.sln项目,经过编译之后,就可以得到想要的.dll和.lib文件了,然后你就可以使用这些库文件了,当然还要包含相用的头文件。 ok,这些都是先略微的提一下,后面会有详细的操作步骤。 到网址:https://cmake.or原创 2017-09-09 09:16:22 · 5108 阅读 · 13 评论 -
使用vbo、vao、ebo画三角形
#include<glad\glad.h>#include<GLFW\glfw3.h>#include<iostream>void framebuffer_size_callback(GLFWwindow* window, int width, int height);void processInput(GLFWwindow *window);const unsigned int width原创 2017-09-23 13:50:16 · 927 阅读 · 0 评论 -
C# Timer组件
窗体组件中的Timer组件。 1、添加 2、属性设置 设置:Enabled为true,表示可以运行; 设置:Interval为10,表示10秒调用一次;3、编写事件函数: 在此函数中添加你的逻辑即可。原创 2016-09-08 10:49:23 · 608 阅读 · 0 评论 -
shader学习(3)
1、一个简单的shader程序Shader "xxx/ddd" { SubShader { pass //至少一个通道 { CGPROGRAM // 头标 #pragma vertex vert //顶点函数的重命名 #pragma fragment原创 2016-08-14 12:54:23 · 371 阅读 · 0 评论 -
shader学习(5)
主要介绍函数_Object2World,在shader中将立方体的顶点,变换到世界坐标。Shader "xxx/ddd" { SubShader { pass { CGPROGRAM #pragma vertex vert //顶点函数的重命名原创 2016-08-14 14:57:59 · 294 阅读 · 0 评论 -
shader学习(4)
让立方体动起来。 1、C#代码using UnityEngine;using System.Collections;public class NewBehaviourScript : MonoBehaviour { void Update () { //手动构建的旋转矩阵 Matrix4x4 rm = new Matrix4x4();原创 2016-08-14 13:33:12 · 416 阅读 · 0 评论 -
choose between legacy deferred and foward mode
in the article http://blog.csdn.net/wodownload2/article/details/79449760 we give an example of legacy deferred shader. we recall the steps we take to bring legacy deferred into effect. 1, we first ...原创 2018-03-05 20:13:20 · 405 阅读 · 0 评论 -
how to render texture to an image in opengl——part two
when i read https://learnopengl.com/Advanced-Lighting/Deferred-Shading i feel the urge to write a blog which shows you about how to render a position attribute to an image.so, let us begin.i have...原创 2018-03-13 09:37:21 · 331 阅读 · 0 评论 -
切空间(TBN矩阵介绍)
http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/原创 2019-03-26 16:33:32 · 4192 阅读 · 0 评论 -
tool classes when you learn opengl——mesh class
there are fourth code we need to understand when you learn opengl. they are mesh model camera shadertoday i will learn about the mesh class. because mesh is small cell that is can be used t...原创 2018-03-13 20:34:26 · 305 阅读 · 0 评论 -
how to change the camera's parameter to see the objects in the scene.
first we post the code, you can find the code in the website: https://learnopengl.com/code_viewer_gh.php?code=src/1.getting_started/7.3.camera_mouse_zoom/camera_mouse_zoom.cppbut i past the code he...原创 2018-03-22 20:27:58 · 307 阅读 · 0 评论 -
shader笔记(2)
概括:介绍include的使用步骤。文件1、MyFunc.cgincvoid func(out float4 col){ col = float4(0,1,0,1);}文件存放的地址为unity的安装目录下的incude文件夹,具体如下: 文件2、Test.shaderShader "test/xxx"{ SubShader { pass { CG原创 2016-08-11 19:36:45 · 326 阅读 · 0 评论 -
中心点画圆算法
参考网址: http://wenku.baidu.com/link?url=xlbhkU71OkL1PTcf-q01q6FGT1S10S9S91UbkF-Ddf1XvIL4lc6gbAlMIlTvD37iaIcxBlIIwtQpsnBTCw4G0cs14PMSLFNJpSesvgGpVBW圆心在原点(0,0),半径为R。首先画八分之一的圆,如下图所示: 只要画出右图中的八分之一的圆,利用圆的原创 2016-08-04 16:27:00 · 9419 阅读 · 0 评论 -
opengl画线
1、GL_LINES#include "stdafx.h"#include <windows.h>#include <GL/glu.h>#include <GL/gl.h>#include <GL/glut.h>void myDisplay(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f,0.0f,1.0f);原创 2016-08-02 13:24:05 · 3519 阅读 · 0 评论 -
opengl画点
#include "stdafx.h"#include <windows.h>#include <GL/glu.h>#include <GL/gl.h>#include <GL/glut.h>void myDisplay(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f,0.0f,1.0f); //设置点的大小原创 2016-08-01 14:08:26 · 714 阅读 · 0 评论 -
画圆——方程算法
1、圆的方程: 2、代码:#include "stdafx.h"#include <windows.h>#include <GL/glu.h>#include <GL/gl.h>#include <GL/glut.h>#include<stdlib.h> #include<math.h>void DrawCircle(int x, int y, int r){ int n原创 2016-08-04 11:46:16 · 1436 阅读 · 0 评论 -
向量与矩阵的相乘
在学习计算机图形学的时候,最常遇到的就是矩阵的乘法了,下面我们就简单的介绍下,使用程序如何编写两个矩阵的相乘呢?其实这个问题,大一的孩子都会写的,不是很难的,但是呢,为了构建一个完整的学习过程,还是记录一下基础知识。1、向量乘以矩阵 如上图所示,是用向量的各个元素,乘以矩阵的对应列的四个分量,得到最终的向量,程序如下:public Vector4 Mul(Vector4 v){原创 2016-07-31 10:00:55 · 26794 阅读 · 0 评论 -
Bresenham画线算法
参考: http://wenku.baidu.com/link?url=xKODYgXOSh20OoWMHk4stVmAxK2ibWvIOUhiDiqjGX24ALotglvjZF4aDCQ2craXe2naVaZG2QjzPH0hxB-G4gYhaYZoHNsGu4biZqfY57C在取样位置xk+1,y的值根据直线方程为得到: 此时我们从图中可以得到y与yk意见yk+1之间的距离:原创 2016-08-03 10:39:16 · 862 阅读 · 0 评论 -
2D平移矩阵与3D平移矩阵
之前,我们的翻译的时候,发现将3D的点,做平移,借助的是四维矩阵。其实,我们本篇博客,是先讲述从2D点得平移,进而引出3D点得平移。哈哈,不过没关系了,都是理解加记忆,由浅入深,或者由深再入浅又有什么关系呢?这里我们要讲的是为什么2维的坐标不能用了做2维点得平移呢?像上图,我们试图用(x,y)乘以一个二阶的单位矩阵,得到的还是自己;我们试图用(x,y)乘以一个普遍意义的二阶矩阵,得到的是关于x+my原创 2016-07-29 22:14:26 · 8189 阅读 · 1 评论 -
矩阵变换推导
http://ogldev.atspace.co.uk/www/tutorial06/tutorial06.html 翻译如下: 背景知识: 本次教程主要介绍3D物体的多种变换,在屏幕上如何展示3D物体,并在视觉上保持物体在场景中的深度。最普遍的方法是用矩阵来代表一个变换,一个一个矩阵的连乘点得坐标最终得到一个结果。每篇教程都会讲解一个变换。 下面我们来看下平移变换(tran原创 2016-07-29 21:10:05 · 730 阅读 · 0 评论 -
DDA画线算法
作者:wodownload2 地址:http://blog.csdn.net/wodownload2/1、算法介绍: 已知两个点,(已知的点),确定离散的若干个点,逐个点画起来,就可以形成一条直线。2、公式推导: 设直线两端点为:起点A(x0,y0);终点为B(x1,y1)。 则直线的斜率和方程为: 下面分为两种情况考虑:当斜率小于等于1的时候,x每次增加1,y最多增加1。 而当斜率原创 2016-08-02 14:34:49 · 25730 阅读 · 4 评论 -
投影矩阵的推导
参考网址: http://www.codeguru.com/cpp/misc/misc/graphics/article.php/c10123/Deriving-Projection-Matrices.htm#page-3 http://blog.csdn.net/zhanghua1816/article/details/23121735在3D图形学中所有的变换,其中透视变换是稍微复杂一点的。平原创 2016-08-01 11:35:21 · 10039 阅读 · 0 评论 -
shader笔记(1)——前置声明+SV_POSITION和POSITION区别
Shader "test/xxx"{ SubShader { pass { CGPROGRAM #pragma vertex vert #pragma fragment frag void func(out float4 col);//前置声明 void vert(in float2 objPos:POSITION,原创 2016-08-11 11:30:58 · 1926 阅读 · 0 评论 -
裁剪区域和视口区域(2)
代码解释: 1)void glutReshapeFunc(void(*func)(int width, int height)); GLUT定义了当窗口大小改变时glutReshapeFunc()函数应该被调用。此外,这个函数还会在窗口初次被创建时调用,保证初始化窗口不是正方形的时候渲染也不会变形出错。转载 2016-09-13 10:38:13 · 1348 阅读 · 0 评论 -
裁剪区域和视口区域(1)
参考网址:http://www.cnblogs.com/MenAngel/p/5630475.html问题:画圆,然后拖拽窗口的大小,圆会发生变形。 代码如下:// ClipWindow.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<GL/glut.h>#include<math.h>const float Pi = 3.1415926f转载 2016-09-12 16:18:44 · 917 阅读 · 0 评论 -
MVP矩阵的作用
参考网址:http://www.toymaker.info/Games/html/matrices.html MVP矩阵的作用 Direct3D需要3个矩阵才能将3D几何物体渲染到2D屏幕上。 四个坐标系: 1、模型坐标2、世界坐标 3、视口坐标 4、屏幕坐标翻译 2016-08-22 14:28:48 · 2131 阅读 · 0 评论 -
二维裁剪
一般来说,图形软件让用户指定已经定义的图中哪部分要显示,以及显示在设备的什么位置。任何一个称为世界坐标系的常规笛卡尔坐标系统都可以用来定义图形。在二维情况下,可以使用xy平面上的包含全图或任意部分的区域来选择视图。用户可以只选择一个区域,也可以显示显示几个区域,或者显示一个场景的动态扫视序列。二维观察流水线二维场景中要显示的部分称为裁剪窗口(clipping window),所有在此区域之外的场景均翻译 2016-09-09 11:20:50 · 2541 阅读 · 0 评论 -
扫描线填充算法(2)
扫描线填充算法(2) 活动边表示扫描线填充算法的核心,整个算法都是围绕着这张表进行处理的。要完整的定义“活动边表”,需要定义边的数据结构。每条边都和扫描线有个交点,扫描线填充算法只关注交点的x坐标。每当处理下一条扫描线时,根据xi+1/m直接计算出扫描线与边的交点x坐标,可以避免复杂的求交计算。一条边不会一直待在“活动边表”中,当扫描线与之没有交点时,要将其从“活动边表”中删除,判断是否有交点的依原创 2016-08-30 10:55:15 · 2590 阅读 · 1 评论 -
齐次坐标
reference websites are: http://www.songho.ca/math/homogeneous/homogeneous.html https://learnopengl.com/Getting-started/Transformations1、问题:两条平行线可用相交 在欧式空间(几何)中,在同一个平面内的两个平行线是不能相交的。 但是在透视空间中,这个就不...翻译 2016-08-21 14:29:57 · 748 阅读 · 0 评论 -
奇偶规则VS非零环绕规则
参考网址: 1、http://wenku.baidu.com/link?url=j-m9jUQzwaW6p2a4VGXNC8-68FLflMovz7Z-Nb4Bp23a5dsg1ereQlES8jm5cl-zsnHs6qDOe9Dykdxwi9JLDEV0qkLAqxMAPkVqcWwUh-q2、http://www.verydemo.com/demo_c134_i2057.html方法1:奇偶规原创 2016-08-08 14:43:02 · 5949 阅读 · 0 评论 -
扫描线填充算法(1)
参考网址:http://blog.csdn.net/orbit/article/details/7368996 http://wenku.baidu.com/view/4ee141347c1cfad6195fa7c9.html?from=search http://download.csdn.net/detail/xiaowei_cqu/4408894 扫描转换和区域填充这个问题是:怎样在离散原创 2016-08-08 18:00:35 · 22954 阅读 · 9 评论 -
平面方程推导
1、平面的点法式方程推导 定义:如果一个非零向量垂直于一个平面,这向量就叫做该向量的法线向量。 特征:法线向量的特征:垂直于平面内的任一向量。 2、平面的一般方程 由点法式展开可以得到: 所以得到一般的方程为: Ax+By+Cz=0参考网址: 1、http://wenku.baidu.com/link?url=jkNsa0khFGgwV3wlH7GGpm7yolr6b6i8Ta原创 2016-08-08 16:35:21 · 5571 阅读 · 0 评论 -
画一个三角形
1、三角形类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Drawing; //引入此命名空间namespace CGForm{ class Triangle {原创 2016-07-29 13:41:23 · 485 阅读 · 0 评论