什么是颜色

在搞清楚什么是光照之前,我们应该线弄清楚什么是颜色。人之所以可以看见颜色是因为这种波段的光进入了人眼,而实际上物体的颜色和光的颜色恰好是互补的,例如一个蓝色的物体恰恰是因为他吸收了除了蓝色以外的所有波段的光,从而使得蓝光反射进入到了人眼。

阅读全文 »

纹理的意义

实际上,如果我们规定死每个顶点的颜色属性,那么其实也可以呈现出丰富的画面,但是往往一个面上的像素点有成千上万个,尚且不说这么做会消耗大量的内存,光是将这些点渲染出来就会耗费大量的时间。所以如果我们可以将一张图片和一个面上的点一一映射起来,这样不就可以把图片“粘”在物体的面上了吗,因此这也便是纹理(Texture)的由来。

阅读全文 »

GLSL

之前有提到过着色器是用一种类C的语言,当然其他图形API可能也有其专门的语言。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#version version_number //声明版本号
layout (location=0) in type in_variable_name;
in type in_variable_name;
in type in_variable_name;

out type out_variable_name;

uniform type uniform_name;

int main()
{
// 处理输入并进行一些图形操作
...
// 输出处理过的结果到输出变量
out_variable_name = weird_stuff_we_processed;
}
阅读全文 »

OpenGL简介

首先需要明确的是,OpenGL不是什么物理引擎,也不是什么语言,而是一种规范,可以类比成是一个API,而具体的实现需要由开发者自行实现。而这一般也是由显卡的生产商实现的,所以不同平台的OpengL也有所不同。

阅读全文 »

前提概念

  • 顶点数组对象(VAO,Vertex Array Object)
  • 顶点缓冲对象(VBO,Vertex Buffer Object)
  • 元素缓冲对象(EBO或IBO,Element Buffer Object Index Buffer Object)
阅读全文 »
0%