栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

opengl-第7章:多张Texture的使用

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

opengl-第7章:多张Texture的使用

目录
    • 1. 版本1.7 QKEnging介绍
      • 1. 增加了静态初始化函数
      • 2. 增加了动态元素
      • 3. 增加了Element初始化附加操作的lambda表达
      • 测试代码
    • 2. 实现多张Texture的使用
      • 1. 将texture绑定gl状态机不同的TextureCode
      • 2. 在调用shader之后,设置shader虚拟机里面的纹理符号 为对应纹理槽
        • 产生纹理
        • shader纹理符号
        • 设置操作
      • 一个简单的证明

1. 版本1.7 QKEnging介绍 1. 增加了静态初始化函数
现在Shader,Texture 元素将不会被循环call use,而是在窗口循环call之前调用一次
2. 增加了动态元素
现在,SimpleData将会在窗口循环事件中循环call use()
3. 增加了Element初始化附加操作的lambda表达


所有的附加lambda表达都将会在use()之后执行

测试代码
#include 
#include 
#include 
#include 
#include 
int main(int argc, char *argv[])
{
	baseWindow window;

	Shader shader("vertex","fragment");
	TextureData data1("test");

	Texture texture1("pp.jpg",0);
	Texture texture2("p2.jpg",1);
	Texture texture3("p3.png", 2);

	shader.addOp([=](shared_ptr sb) {

		shared_ptr sd = static_pointer_cast(sb);
		sd->setInt("ourTexture1", 0);
		sd->setInt("ourTexture2", 2);
	});

	window.addStaticElement(make_shared(texture1));
	window.addStaticElement(make_shared(texture2));
	window.addStaticElement(make_shared(texture3));

	window.addStaticElement(make_shared(shader));
	window.addDynamicElement(make_shared(data1));

	window.run();
	return 0;
}


2. 实现多张Texture的使用 1. 将texture绑定gl状态机不同的TextureCode


在gl状态机里面提供的纹理槽有很多

第一步你需要先激活某个纹理槽,然后再在这个纹理槽里面绑定数据

2. 在调用shader之后,设置shader虚拟机里面的纹理符号 为对应纹理槽 产生纹理

shader纹理符号

设置操作


值得注意的是,你必须得有一个活着的shader虚拟机,你才能向里面设置这些状态,也就是说你必须use()

一个简单的证明
我们直接使用mix函数来进行测试



Nice!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号