CG6-v1.0-纹理映射

本文通过三个关卡详细介绍了OpenGL中的纹理映射技术,包括正方形、球体和矩形的纹理映射方法,涉及纹理控制、纹理定义、纹理映射方式和纹理坐标设置等关键步骤。
摘要由CSDN通过智能技术生成

第1关:正方形纹理映射

一.任务描述
根据提示,在右侧修改代码,并自己绘制出图形。平台会对你编写的代码进行测试。

1.本关任务
为了完成本关任务,你需要掌握:了解计算机图形学的纹理映射原理,了解OpenGL程序的贴图纹理映射方法。
为在场景中添加纹理映射,需要执行以下步骤。
(1).纹理控制,定义纹理如何包裹物体的表面;
(2).定义纹理,利用矩形图像进行贴图是二维纹理贴图中常用的方法;
(3).纹理映射方式,用函数可以设置纹理映射的方式。
(4).纹理坐标,定义纹理与几何坐标对应关系的纹理坐标;

2.预期输出
参考图片

3.具体要求
提示:每一步相关知识可以点击展开查看
给两个正方形添加纹理映射。

(1).设置控制纹理映射
设置控制纹理映射的函数,参数分别如下:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_NEAREST);
g

CGroupInfo::CGroupInfo(shared_ptr<Graph> g){ m_groupSize.clear(); m_groupMembers.clear(); m_groupMembersSize.clear(); m_groupMembersInpSize.clear(); printf("CG0 \n"); for (auto it = g->begin(); it != g->end(); ++it) { printf("CG1 \n"); Node *n = *it; if(kConcat == n->kind()) { printf("CG2 \n"); string groupname = n->output()->uniqueName(); //Value's uniqueName is unique, so can be used as key printf("groupname = %s\n", groupname); m_groupSize[groupname] = getValueSize(n->output()); for(int i = 0; i < n->inputs().size(); i++) { printf("CG3 \n"); Node *inp = n->inputs()[i]->node(); if(n->inputs()[i]->node()->kind() == kParam) { printf("CG4 \n"); continue; } m_groupMembers[groupname].push_back(n->inputs()[i]->uniqueName()); m_groupMembersSize[groupname].push_back(getValueSize(n->inputs()[i])); m_groupMembersInpSize[inp->inputs()[0]->uniqueName()] = getValueSize(inp->inputs()[0]); } } else if(n->inputs().size() > 0 && isGraphInput(g,n)) { printf("CG5 \n"); m_groupSize["group_input"] += getValueSize(n->inputs()[0]); m_groupMembers["group_input"].push_back(n->inputs()[0]->uniqueName()); m_groupMembersSize["group_input"].push_back(getValueSize(n->inputs()[0])); } else if(kTransLayoutAfterSlice == n->kind()) { printf("CG6 \n"); string groupname = n->output()->uniqueName(); //Value's uniqueName is unique, so can be used as key m_groupSize[groupname] = getValueSize(n->output()); for(int i = 0; i < n->inputs().size(); i++) { printf("CG7 \n"); Node *inp = n->inputs()[i]->node(); m_groupMembers[groupname].push_back(n->inputs()[i]->uniqueName()); m_groupMembersSize[groupname].push_back(getValueSize(n->inputs()[i])); m_groupMembersInpSize[inp->inputs()[0]->uniqueName()] = getValueSize(inp->inputs()[0]); } } } }这段是什么意思
06-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ssaty.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值