悲剧小白 发表于 2019-3-24 20:22:35

[光影包制作教程] 第三章———正确显示纹理

本帖最后由 海螺螺 于 2020-1-22 21:01 编辑

索引待建立

在第二章中,我们创建并加载了一个光影包,但是最终的效果很不理想。最明显的缺点是不能正确显示纹理。在这一章节里,我们将会让光影包正确显示出方块和实体的纹理。
知识点回顾
在上一章节中,我们已经实现了gbuffers_basic渲染器的编写(gbuffers_basic的编写已经完成,基本上不会再去碰这个文件了)。但是由于在gbuffers_basic渲染器中所能拿到的信息太少,还不足以显示纹理。我们将目光上移到gbuffers_textured渲染器,本章节将使用gbuffers_textured渲染器实现最基本的纹理显示。
开始编写光影文件
在shaders文件夹里再创建两个文件,分别为gbuffers_textured.vsh和gbuffers_textured.fsh并写出代码。
gbuffers_textured.vsh:#version 120

varying vec4 color;
varying vec4 texcoord;

void main() {
    gl_Position = ftransform();
    color = gl_Color;
    texcoord = gl_TextureMatrix * gl_MultiTexCoord0;
}
gbuffers_textured.fsh:#version 120

uniform sampler2D texture;

varying vec4 color;
varying vec4 texcoord;

void main() {
    gl_FragData = texture2D(texture, texcoord.st) * color;
}
代码解释
相较于gbuffers_basic(为控制篇幅,相同部分不再做解释),顶点着色器多出了一个texcoord,声明了一个可插值变量,不解释了。main函数中多了一个texcoord = gl_TextureMatrix * gl_MultiTexCoord0;,其中gl_TextureMatrix是OpenGL中的纹理坐标矩阵,在固定管线时代,类似于闪电苦力怕身上的能量罩(可以说是能量罩吧?)就是用这个矩阵实现的。gl_MultiTexCoord0表示在启用多重纹理时的0号纹理的坐标(这个坐标其实也是一个矩阵)。坐标乘矩阵等于坐标(高等数学矩阵乘法),所以这句代码的意思是计算纹理的坐标并赋值给texcoord。片段着色器中定义了一个2D的纹理采样器:uniform sampler2D texture;。在main函数中,使用texture2D方法,根据顶点着色器传来的坐标,从texture中获得纹理的颜色,然后再乘以顶点的颜色就得到了最终的颜色。
效果展示
如果你的代码加载后的效果是这个样子,那么恭喜你,本章的目标你已经达成了。
代码下载
本章测验
1、截止到第三章,我们已经写了两个着色器的代码。现在,请再创建两个着色器,分别是gbuffers_skybasic和gbuffers_skytextured。gbuffers_skybasic代码与gbuffers_basic完全相同,gbuffers_skytextured代码与gbuffers_textured完全相同,之后将不再赘述这四个文件目前的代码。请注意:仅仅是目前代码相同,之后会对某些文件做更改,到那时代码将不再相同。(别告诉我看到这里的大家连复制粘贴都不会= _ =)
2、做完测验一后,shaders文件夹里应该一共会有8个文件。将shaders文件夹打包并加载到游戏里,如果以上过程均正确,游戏将不会报错。现在,请找出加载光影包后与不加载任何光影包的画面区别(注:由于目前还是在从零实现固定管线渲染,所以可以用原版做比较)。

吕不才 发表于 2019-3-27 19:36:37

学习学习

SJkongyu 发表于 2019-4-1 14:42:03

楼主牛逼!

616334146 发表于 2019-4-2 21:16:31

单纯为效果。。。

zzp7350 发表于 2019-4-4 11:12:51

坐等下一章

2859286510 发表于 2019-4-6 20:06:04

回复可见

Minecraftsine 发表于 2019-4-7 13:13:59

已收藏,学习学习

minecraft12306 发表于 2019-4-7 17:59:03

感谢楼主分享

dshzsh 发表于 2019-4-8 11:04:23

厉害
6666666

Minecraftsine 发表于 2019-4-8 11:33:06

加油~(破音)一直等着~

18417216501 发表于 2019-4-8 21:49:08

感谢楼主分享

lyclstm 发表于 2019-4-9 22:28:24

666666666666666666666666

迷之老王丿 发表于 2019-4-13 15:44:11

+++++++++++++++++

阳成乐鱼 发表于 2019-4-13 17:44:20

[:lost_soul:]蒙,能不能做视频

xdgg66 发表于 2019-4-14 00:09:14

感谢楼主分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: [光影包制作教程] 第三章———正确显示纹理