OpenGL 简明教程(四)纹理

4.1 开始

要想构筑充满细节的画面,光靠单色和渐变色是不行的。大多数时候画面都是由带纹理的图形构成的,本篇就来探索 OpenGL 怎样将纹理应用到项目中,学习应用纹理的不同方法。

4.2 配置 SOIL

为了应用纹理,我们需要将纹理加载到内存中,而加载纹理的程序并没有在 OpenGL 中提供,需要自行实现或使用图像加载库,比如 SOIL。SOIL(Simple OpenGL Image Library) 就是简易 OpenGL 图像库的缩写。

4.2.1 下载

官方下载地址:http://www.lonesock.net/soil.html
也可以下载我的 CSDN 资源,其中还包含了本篇中用到的图片。

4.2.2 生成 lib

配置 SOIL 的方法与 GLFW 和 GLEW 类似,但是不需要使用 CMake 构建。下载解压后打开 /project/VC9(如果你的 VS 版本太低,使用低版本目录)下的 SOIL.sln 解决方案文件,在 VS 中生成解决方案。

4.2.3 配置目录

与之前类似,在项目中配置 include、lib、链接器->输入:
include
lib
链接器

4.3 纹理

2D 纹理也就是一张 2D 图片(也有 1D、3D 的纹理),比起使用单色或渐变色,使用纹理可以增添许多细节,使画面更加生动,这也是现代游戏最基本的展现画面的方法,纹理在游戏中也被称为贴图。
ut1

4.3.1 加载纹理

我们使用 SOIL 库来加载纹理,新建项目后首先是像上面那样配置好项目,再将头文件包含进去。

#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>
// 使用 SOIL 头文件
#include <SOIL.h>
// 使用上一篇里的着色器类
#include "Shader.h"
#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glu32.lib")

代码整体结构如下:

int main() {
   
	// GLFW 和 GLEW 的代码,创建窗口、定义变量等
	...
	
	// 配置着色器,使用着色器函数加载、编译、链接着色器源码
	Shader ourShader("useTexture.vgl", "useTexture.fgl");
	
	// 创建和使用 VBO、VAO、EBO
	...
	
	// --== 创建纹理对象,加载图像 ==--
	...

	// 主循环
	while (!glfwWindowShouldClose(window)) {
   
		
		// 处理事件,设置背景色
		...

		// 绑定纹理对象,函数会自动把纹理赋值给片段着色器的采样器
		glBindTexture(GL_TEXTURE_2D, texture);

		// 使用着色器
		ourShader.use();

		// 绘制图像,交换缓冲
		...
	}
}

ut4
将本地图片导入到项目目录下,项目结构如图。在代码中使用 SOIL_load_image() 将其加载到内存中。

	// 创建纹理对象
	GLuint texture;
	// 生成 1 个纹理
	glGenTextures(1, &texture);
	// 将纹理绑定到 GL_TEXTURE_2D 
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值