将纹理坐标与索引缓冲区一起使用

问题描述

我正在学习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 (将#修改为@)