如何解决将纹理坐标与索引缓冲区一起使用
我正在学习OpenGl。 我接触过用给定的一组坐标制作实体形状并在其上包裹纹理的方法。
这就是我的顶点和纹理坐标的样子。
float vertices[] = {
//<---Positions----> <-texCoords->
-0.5f,-0.5f,0.0f,0.5f,1.0f,1.0f
};
前三个是位置坐标,后两个是该特定顶点的纹理坐标。我知道在使用绘制调用之前要调整buffersize等。从这组顶点可以看出,立方体的每个面都有坐标,我知道它的效率很低,所以我遇到了一个问题,我查找了一些索引缓冲区,并从中已经意识到我们只需要8个顶点来绘制一个立方体和36个索引即可定义每个面。 这大大减少了内存使用。 更改之后,这就是我的一组坐标和索引的样子:
float vertices[] = {
// front
-0.5f,// back
-0.5f,-0.5f
};
unsigned int index[] = {
// front
0,1,2,3,// right
1,5,6,// back
7,4,7,// left
4,// bottom
4,// top
3,3
};
但是这样做之后,我不知道在哪里实现与以前相同的纹理坐标。
之前,我以每行作为缓冲区,这些缓冲区具有特定的布局,用于布置来自顶点[]的位置和纹理坐标,并将其馈送到着色器程序中。
但是这次我没有面孔,只有8个顶点。我猜想我们需要为纹理坐标创建另一个数组,并将它们绑定到新的缓冲区,即使这样我还是不够清楚。
我真的很感谢您的帮助。(在两种情况下,多维数据集都可以用纯色很好地呈现出来)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。