0%

OGRE Tutorials


OGRE 教程

Guide to Building OGRE


环境搭建


Setting up an OGRE project


构建项目

阅读全文 »

Text Rendering(文本渲染)

Bitmap Font


Bitmap Font(位图字体)


TrueType Font


TrueType字体不是用像素或其他不可缩放的方式来定义的,它是通过数学公式(曲线的组合)来定义的。类似于矢量图像,这些Rasterization后的字体图像可以根据需要的字体高度来生成。通过使用TrueType字体,你可以轻易渲染不同大小的字形而不造成任何质量损失。


freetype

阅读全文 »

freetype


FreeType是一个能够用于加载字体并将他们渲染到位图以及提供多种字体相关的操作的软件开发库。它是一个非常受欢迎的跨平台字体库,它被用于Mac OS X、Java、PlayStation主机、Linux、Android等平台。FreeType的真正吸引力在于它能够加载TrueType字体。

TrueType字体不是用像素或其他不可缩放的方式来定义的,它是通过数学公式(曲线的组合)来定义的。类似于矢量图像,这些Rasterization后的字体图像可以根据需要的字体高度来生成。通过使用TrueType字体,你可以轻易渲染不同大小的字形而不造成任何质量损失。


阅读全文 »

Uniform Buffer Object


//vert1.vs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#version 330 core
layout (location = 0) in vec3 aPos;

uniform mat4 model;

layout (std140) uniform Matrices
{
mat4 projection;
mat4 view;
};

void main()
{
gl_Position = projection * view * model * vec4(aPos, 1.0);
}

//vert2.vs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#version 330 core
layout (location = 0) in vec3 aPos;

layout (std140) uniform Matrices
{
mat4 projection;
mat4 view;
};

uniform mat4 model;

void main()
{
gl_Position = projection * view * model * vec4(aPos, 1.0);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//uniformBlockBinding < GL_MAX_UNIFORM_BUFFER_BINDINGS
uniformBlockBindingID = 10;
//创建buffer
unsigned int uboMatrices;
glGenBuffers(1, &uboMatrices);
glBindBuffer(GL_UNIFORM_BUFFER, uboMatrices);
glBufferData(GL_UNIFORM_BUFFER, 2 * sizeof(glm::mat4), NULL, GL_STATIC_DRAW);
glBindBuffer(GL_UNIFORM_BUFFER, 0);

// define the range of the buffer that links to a uniform binding point
glBindBufferRange(GL_UNIFORM_BUFFER, uniformBlockBindingID, uboMatrices, 0, 2 * sizeof(glm::mat4));

//获取uboindex,并uboindex绑定uniformBlockBinding
unsigned int uniformBlockIndex1 = glGetUniformBlockIndex(program1, "Matrices");
glUniformBlockBinding(program1, uniformBlockIndex1, uniformBlockBindingID);

//获取uboindex,并uboindex绑定uniformBlockBinding
unsigned int uniformBlockIndex2 = glGetUniformBlockIndex(program2, "Matrices");
glUniformBlockBinding(program2, uniformBlockIndex2, uniformBlockBindingID);

// store the projection matrix (we only do this once now) (note: we're not using zoom anymore by changing the FoV)
glm::mat4 projection = glm::perspective(45.0f, (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f);
glBindBuffer(GL_UNIFORM_BUFFER, uboMatrices);
glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(glm::mat4), glm::value_ptr(projection));

阅读全文 »

OPENGL2.1

图元 描述
GL_POINTS
GL_LINES 线段
GL_LINE_STRIP 一个从第⼀个顶点依次经过每一个后续顶点而绘制的线条
GL_LINE_LOOP 和GL_LINE_STRIP相同,但是最后⼀个顶点和第⼀个顶点连接起来了了.
GL_TRIANGLES 每3个顶点定义⼀个新的三⻆角形
GL_TRIANGLE_STRIP 共⽤⼀个条带(strip)上的顶点的⼀组三角形
GL_TRIANGLE_FAN 以一个圆点为中⼼心呈扇形排列列,共⽤用相邻顶点的一组三⻆角形
GL_QUADS 四边形
GL_QUAD_STRIP 四边形
GL_POLYGON 单个简单填充凸多边形

OPENGL3.3

图元 描述
GL_POINTS
GL_LINES 线段
GL_LINE_STRIP 一个从第⼀个顶点依次经过每一个后续顶点而绘制的线条
GL_LINE_LOOP 和GL_LINE_STRIP相同,但是最后⼀个顶点和第⼀个顶点连接起来了了.
GL_LINE_STRIP_ADJACENCY 新增
GL_LINES_ADJACENCY
GL_TRIANGLES 每3个顶点定义⼀个新的三⻆角形
GL_TRIANGLE_STRIP 共⽤⼀个条带(strip)上的顶点的⼀组三角形
GL_TRIANGLE_FAN 以一个圆点为中⼼心呈扇形排列列,共⽤用相邻顶点的一组三⻆角形
GL_TRIANGLE_STRIP_ADJACENCY 新增
GL_TRIANGLE_ADJACENCY 新增

OPENGL4.5

图元 描述
GL_POINTS
GL_LINES 线段
GL_LINE_STRIP 一个从第⼀个顶点依次经过每一个后续顶点而绘制的线条
GL_LINE_LOOP 和GL_LINE_STRIP相同,但是最后⼀个顶点和第⼀个顶点连接起来了了.
GL_LINE_STRIP_ADJACENCY
GL_LINES_ADJACENCY
GL_TRIANGLES 每3个顶点定义⼀个新的三⻆角形
GL_TRIANGLE_STRIP 共⽤⼀个条带(strip)上的顶点的⼀组三角形
GL_TRIANGLE_FAN 以一个圆点为中⼼心呈扇形排列列,共⽤用相邻顶点的一组三⻆角形
GL_TRIANGLE_STRIP_ADJACENCY
GL_TRIANGLE_ADJACENCY
GL_PATCHES 新增

GL_POINTS

GL_LINES

GL_LINES_STRIP

阅读全文 »