Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简化纹理和角坐标';openGL_Java_Opengl_Glu - Fatal编程技术网

Java 简化纹理和角坐标';openGL

Java 简化纹理和角坐标';openGL,java,opengl,glu,Java,Opengl,Glu,这是我的骰子的坐标部分(被骰子纹理覆盖的立方体)。 我在一些代码中看到,可以忽略指向相同位置的公共坐标?不管我怎么做,我的身材都会乱的! 我如何简化它 这是我的代码-->立方体角坐标、纹理坐标和顶点索引 final float pt2[] = new float[] { 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0,

这是我的骰子的坐标部分(被骰子纹理覆盖的立方体)。 我在一些代码中看到,可以忽略指向相同位置的公共坐标?不管我怎么做,我的身材都会乱的! 我如何简化它

这是我的代码-->立方体角坐标、纹理坐标和顶点索引

final float pt2[] = new float[] { 
                0, 0, 0,
                0, 1, 0,
                1, 0, 0, 
                1, 1, 0,

                0, 0, 1,
                0, 1, 1, 
                1, 0, 1,
                1, 1, 1,

                1, 1, 1, /* 8 */
                1, 1, 0,
                0, 1, 0, 
                0, 1, 1,

                1, 0, 1, 
                1, 0, 0,
                0, 0, 0,
                0, 0, 1,

                0, 0, 1, /* 16 */
                0, 1, 1,
                1, 1, 1, 
                1, 0, 1,

                1, 0, 0,
                0, 0, 0, 
                0, 1, 0, 
                1, 1, 0 };
        final float texture[] = new float[] { 
                1f, 0.66f, 
                0.66f, 0.66f,
                0f,0.33f, 
                0.33f, 0.33f,

                1f, 0.33f, 
                0.66f, 0.33f,
                0.0f, 0.0f,
                0.33f, 0f,

                0.33f, 0f,
                0.33f, 0.33f,
                0.66f, 0.33f,
                0.66f, 0f,

                0.33f, 0.33f,
                0.33f, 0.66f,
                0.66f, 0.66f,
                0.66f, 0.33f,

                0.66f, 0f,
                0.66f, 0.33f,
                1f, 0.33f, 
                1f, 0f,

                0f, 0.33f,
                0f, 0.66f,
                0.33f, 0.66f,
                0.33f, 0.33f,

        };

        final byte[] vertexIndex = new byte[] { 
                6, 2, 3,7, //1
                5, 1, 0, 4, //2
                8,9,10, 11, //3
                15, 14, 13,12, //4
                20, 21,22, 23, //5
                16, 19, 18, 17 }; //6

是的,事实上,您在这里要做的绝对是要做的-只需指定每个顶点一次。它不仅节省了内存,而且避免了两个或多个顶点(应该位于同一位置)没有完全相同的浮点值时出现细微的视觉瑕疵

下面是一个结合了我的代码库和DX教程的示例

您正在为顶点坐标和纹理坐标使用单独的数据结构,而在这里,它们都挤在一起,但想法是相同的

这里重要的一点是,顶点表中只有8个条目-正好是立方体中的顶点数-没有额外的。您可以在索引缓冲区中对同一顶点进行多个引用,但这正是您想要的—重用同一顶点条目

struct MyVertex
{
    float x, y, z;
    float t, v;
};

// the cube corners, note that there are only 8 entries
// in table - no duplicates

MyVertex vx[] = 
{
    { 0.0f, 0.0f, 0.0f, 0.0f,1.0f },    // one corner of the cube
    { 0.0f, 1.0f, 0.0f, 0.0f,0.0f },
    { 1.0f, 1.0f, 0.0f, 1.0f,0.0f },
    { 1.0f, 0.0f, 0.0f, 1.0f,1.0f },
    { 0.0f, 0.0f, 1.0f, 0.0f,0.0f },
    { 1.0f, 0.0f, 1.0f, 0.0f,1.0f },
    { 1.0f, 1.0f, 1.0f, 0.0f,0.0f },
    { 0.0f, 1.0f, 1.0f, 0.0f,1.0f }
};

// index buffer that points back into vx[]

short indexBuffer[] = 
{
    0,1,2, 2,3,0,   // cube face 0 (2 tris here)
    4,5,6, 6,7,4,   // 1
    0,3,5, 5,4,0,   // 2
    3,2,6, 6,5,3,   // 3
    2,1,7, 7,6,2,   // 4
    1,0,4, 4,7,1    // 5
};

请修改文本;你使用英语使你很难理解你说的话。我只想简化这些坐标,省略其中一些,以减少缓冲区的长度(如果可能的话)