渲染世界的Opengl
文章平均质量分 81
Silver Gamer
游戏引擎研发工程师;迁移学习学习域自适应的前研究者。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
渲染世界的Opengl<前言>
经历一学期的忙碌,我又可以空出时间来学习我所想要学习的东西。作为程序员的能力在学校不断的提高,在研究所帮助别的公司开发VR以及研究所自己的小项目,带人一起完成人物,也可以大言不惭的说能力有所提升。而我作为数字媒体的一名学生,在不断的学习之中越来越发现Opengl的重要性。虽然计算机图形学的成绩突破优秀率,但是直至这门课的结束,我也不能初步理解opengl。错过了这次机会让我很遗憾。我决意在这次假期对原创 2016-07-24 17:16:31 · 749 阅读 · 0 评论 -
渲染世界的OPENGL<15>纹理进阶-点精灵
点精灵(Point Sprite)使用点精灵我们可以通过绘制一个3D点将一个2D纹理图像显示在任意位置上。 点精灵最常见的应用就是微粒系统。我们可以用点来表示在屏幕上移动的大量微粒,来产生一些视觉效果。但是把这些点表示为很小的重叠2D图像就是戏剧性流动着的细丝。 点精灵允许我们通过发送单个3D顶点,渲染一个完美对齐的纹理2D多边形。点精灵所需要的带宽只有为四边形发送四个顶点所用的带宽的四分之一,原创 2016-10-01 15:25:29 · 2495 阅读 · 0 评论 -
渲染世界的OPENGL<14>纹理进阶-多重纹理
多重纹理 OPENGL允许我们将独立的纹理对象绑定到一些可用的纹理单元上,从而提供了将两个或更多纹理同时应用到几何图形上的能力。我们可以对实现进行查询:GLint iUnits;glGetIntegerv(GL_MAX_TEXXTURE_UNITS, &iUnits);默认情况下,第一个纹理单元为活动的纹理单元。所有纹理绑定操作都会影响当前活动的纹理单元。我们可以通过调用以纹理单元标识符为变量的原创 2016-09-27 16:47:49 · 1443 阅读 · 0 评论 -
渲染世界的OPENGL<13>纹理进阶-矩形及立方体贴图
1.矩形纹理对于二维纹理图像来说,另一个有用的选项是纹理目标:GL_TEXTURE_RECTANGLE. 纹理特点:不能进行MIP贴图,意味着我们只能够加载glTexImage2D的第0层。 纹理坐标不是标准化的。这就意味着纹理坐标实际上是对像素寻址,而不是从0到1的范围覆盖图像的。 注意纹理坐标不能重复,并且不能支持压缩。 例如:纹理坐标(5,19)实际上是图像中从左起6个像素以及从上面起原创 2016-09-25 17:29:52 · 3599 阅读 · 0 评论 -
渲染世界的OpenGL<6>基础变换
这部分的知识涉及到GLTools库当中的一个组件:Math3d,包含大量好用的OpenGL一致的3D数学例程和数据类型。1.3D图形数学(1)向量 带箭头的线段可以视为一个向量。包含两种意义:1.方向 2.数量。对于数量的解释是向量的长度。 单位向量:长度为一的向量。 标准化:把非单位向量转化为单位向量的过程。长度缩放为 1。//math3D当中的数据类型,可以表示三维或者四维向量。type原创 2016-09-06 13:34:20 · 683 阅读 · 0 评论 -
渲染世界的OPENGL<12> 一些有趣的纹理着色器
从着色器访问纹理贴图是非常简单的。纹理坐标将会作为属性传递到我们的顶点着色器,在片段着色器当中,这些属性通常是在顶点之间进行平滑插值的。片段着色器使用这些差值纹理坐标来对纹理进行采样。(1)只处理纹理单元// The TexturedIdentity Shader// Vertex Shader// Richard S. Wright Jr.// OpenGL SuperBible//最为简原创 2016-09-20 16:29:27 · 2583 阅读 · 0 评论 -
渲染世界的OPENGL<11>模拟光线
(1)简单漫反射光 3D图形应用最普遍的光线类型就是漫射光。漫反射光是一种经过平面反射的定向光,其强度和光线在表面的入射角成正比。 要确定一个指定定点上的光线的强度,我们需要两个向量。第一个向量就是光源的方向。某些光源技术只是提供一个指向光源的向量,我们称之为定向光。对于所有顶点来说指向光源的,都是同一个向量。 注意:这种方式在光源距离被照亮物体非常远的情况下是非常适用的。如果照明代码提供的是原创 2016-09-19 21:49:41 · 1262 阅读 · 0 评论 -
渲染世界的OPENGL<10>GLSL编程-着色器统一值
属性是每个顶点位置、表面法线和纹理坐标都需要的,而统一值则用于为整个图元批次向保持不变的着色器传递数据。对于顶点着色器来说,最普遍的统一值就是变换矩阵。任何着色器变量都可以指定为一个统一值,而统一值可以在3个着色器阶段中的任意一个阶段。 创建统一值的方法很简单,只需要在变量声明开始的时候放置一个uniform关键字。 统一值不能标记为in或out,他们也不能在着色器阶段之间进行插值,并且他们总是原创 2016-09-18 21:52:51 · 884 阅读 · 0 评论 -
渲染世界的Opengl<5>基础渲染代码分析
1.混合知识 OpenGL渲染的时候会把颜色值放在颜色缓冲区当中。每个片段的深度值放在深度缓冲区中 打开了OpenGL的混合功能方法:glEnable(GL_BLEND);打开混合功能,新的颜色会与已经存在的颜色值在颜色缓冲区中进行组合。这些颜色的组合方式不同会导致很多不同的特殊效果。(1)组合颜色术语 目标颜色:已经存储在颜色缓冲区中的颜色。这个颜色包含单独的红绿蓝以及一个可选的alpha值原创 2016-09-05 17:48:30 · 616 阅读 · 0 评论 -
渲染世界的OPENGL<9>GLSL编程-单位着色器
GLSL基础 我们至少需要两种着色器:顶点着色器和片段你着色器。还有一种可选的着色器为几何着色器。我们可以在三种方式中选择一种来为顶点着色器传递数据: ~参数:对顶点而言。 ~统一值:针对整个顶点数据批次的常量。 ~纹理数据:为片段着色器设置统一值和纹理数据。 注意:将顶点属性发送到片段着色器上毫无意义。片段着色器只是用来在图元进行光栅化后对片段进行填充。不过每个顶点数据都可以通过顶点程序原创 2016-09-14 22:03:40 · 1069 阅读 · 1 评论 -
渲染世界的Opengl<4>基础渲染
1.基础渲染管线 基础渲染管线分为两个部分:客户机端,以及服务器端。 服务器和客户机在功能上是异步的,也就是说他们是各自独立的软件块或硬件块。着色器相关着色器使用GLSL编写的程序。着色器必须从源代码中编译和链接到一起才可以使用。最终准备就绪的着色器程序随后在第一阶段构成顶点着色器,第二阶段构成片段着色器。属性:一个队每个顶点都要做出改变的数据元素。属性可以是浮点数,整数或者布尔数据,属性总是以原创 2016-09-04 12:58:34 · 1080 阅读 · 0 评论 -
<3>OpenGL入门知识介绍
Opengl最大的特点莫过于坚持做到在加入新特性的同时尽量少地与旧代码发生冲突。 1.API特性 (1)数据类型 GL开头表示OpengL,函数后面使它们的最小位宽和相关描述。 注意OpenGL并没有对指针和数组做特殊的考虑,我们可以像下面这样声明一个包含10个GLshort变量的数组:GLshort shorts[10]而下面这行代码则声明了一个长度为10的指向GLdouble类型变量的指原创 2016-09-03 18:15:32 · 723 阅读 · 0 评论 -
OpenGL超级宝典具体配置VS2015
Opnegl超级宝典配置方法,网上众说纷纭,没有定论,好多方法都比较模糊,经过楼主测试n回,尝试无数方法,下面列出相关的配制方法: 首先是glew2.0,这个资源官方已经编译结束。 解压glew,include目录下的GL复制到VS2015->VC->Include。 glew目录下的lib目录复制到VS2015->VC->Lib。 glew目录下的dll文件win32中dll复制到C:/W原创 2016-09-03 17:14:11 · 1274 阅读 · 0 评论 -
渲染世界的OpenGL<8> 基础纹理
基础纹理的大体步骤: 载入纹理图像 设置纹理贴图参数 管理多重纹理 生成Mip贴图 使用各向异性过滤 载入压缩纹理纹理贴图(Texture mapping):纹理只是一种能够应用到场景当中三角形上的图像数据,他通过经过过滤的纹理单元填充到实心区域。1.原始图像数据 位图:经常用在饱含灰度或全彩色的图像中。(1)像素包装图像数据在内存中很少以紧密包装的形式存在。处于性能的考虑,一幅图像的原创 2016-09-10 16:18:25 · 1462 阅读 · 0 评论 -
渲染世界的OpenGL<7>基础变换代码分析
(1)移动旋转方块代码分析这个代码是基于最开始的代码分析当中对方块的移动的代码。 实现每一次移动方块,方块都会进行旋转相应的角度。通过对旋转矩阵的增加,并且将旋转矩阵和移动矩阵进行综合,并且将其作为参数投入到shadermanagement当中,从而使得每一个顶点都会遵循相应的移动矩阵方式对其进行移动。#pragma comment(lib,"GLTools.lib")#include <GLTo原创 2016-09-08 21:51:29 · 507 阅读 · 0 评论 -
渲染世界的Opengl<2>着色器基础-着色器语言概述
1.OpenGL的可编程管线 (1)顶点着色阶段 将接受你在顶点缓存对象中给出的顶点数据。独立处理每个顶点。必须步骤,并且必须绑定一个着色器。 (2)细分着色阶段 可选阶段。与应用程序中显式指定几何图元的方法不同,会在Opengl管线内部生成新的几何体。 (3)几何着色阶段 可选的阶段,会在Opengl管线内部对所有的几何图元进行修改。这个阶段会作用于每一个独立的几何图元。从输入图元生成原创 2016-07-29 21:18:39 · 1185 阅读 · 0 评论 -
渲染世界的Opengl<1> Opengl基础知识整理
在进行Opengl学习之前,我将会对Opengl语言当中涉及到的诸多基础知识进行整理。一来对自己的思想进行整理,可以说是学习笔记。另外希望可以帮助到和我一样的小白,能够更快的上手入门。和优快云诸君共勉。首先关于OPENGL的环境配置,我安装的环境是VS2015+Opengl4.3。下面放出连接: FreeGlut3.0 Glew1.13 对应的bin和include记得放到VS/VC对应的目原创 2016-07-25 20:21:32 · 1489 阅读 · 0 评论 -
渲染世界的OPENGL<16>纹理进阶-纹理数组
着色器可以一次性访问几个纹理对象,我们可以进一步使用称为纹理数组的特性。 在纹理数组上,我们可以将整个数组的纹理图像绑定到一个纹理对象上,然后在着色器当中对他们进行检索,这样就大大增加着色器可用纹理数据的数量。(1)加载2D纹理数组 纹理数组添加了两个新的纹理对象作为大多数纹理管理函数的有效参数:GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D_ARRAY。对于原创 2016-10-01 16:38:15 · 3331 阅读 · 1 评论
分享