0

大家晚上好

我试图让我的 OpenGL 程序使用 1 个纹理(纹理图集)。它是 256 x 256。我将其加载为普通纹理。

如果纹理是从 0,0 到 1,1,那么我相信每个正方形的大小是 0.2。

在此处输入图像描述

问题只是第一个和第三个纹理工作。第二个是奇数,第四个似乎是第二个+第三个纹理,第五个是第二个,第三个和第四个放在一起

在此处输入图像描述

所以我构建了一个简单的函数来返回纹理坐标

    int yy = textureId / 5;
    int xx = textureId % 5;
    float size = 1.0f / 5;

    float[] textureCoordinateDataMap = createTexture(size * xx,size * yy ,size, size );


    public float[]createTexture(float x, float y, float xx, float yy)
    {
         float[] textureCoordinateDataMap =
                 {
                         // Front face
                         x, y,
                         x, yy,
                         xx, y,
                         x, yy,
                         xx, yy,
                         xx, y,

                         // Right face
                         x, y,
                         x, yy,
                         xx, y,
                         x, yy,
                         xx, yy,
                         xx, y,

                         // Back face
                         x, y,
                         x, yy,
                         xx, y,
                         x, yy,
                         xx, yy,
                         xx, y,

                         // Left face
                         x, y,
                         x, yy,
                         xx, y,
                         x, yy,
                         xx, yy,
                         xx, y,

                         // Top face
                         x, y,
                         x, yy,
                         xx, y,
                         x, yy,
                         xx, yy,
                         xx, y,

                         // Bottom face
                         x, y,
                         x, yy,
                         xx, y,
                         x, yy,
                         xx, yy,
                         xx, y,
                 };

        return textureCoordinateDataMap;
    }

我试图硬编码这些值,唯一有效的是 0,0 0.4,0 0,0.4 0.4,0.4

4

1 回答 1

1

如果要将此数组中的值用作纹理坐标,则需要将大小添加到左/下坐标以获得右/上坐标。现在,您使用尺寸本身作为右/上坐标。一种方法是在函数调用中添加大小:

float[] textureCoordinateDataMap = createTexture(
     size * xx, size * yy , size (xx + 1), size * (yy + 1));
于 2014-11-04T06:18:49.857 回答