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
Java 纹理坐标don';不行?_Java_Opengl_Texture Mapping - Fatal编程技术网

Java 纹理坐标don';不行?

Java 纹理坐标don';不行?,java,opengl,texture-mapping,Java,Opengl,Texture Mapping,说真的,我对这段代码很生气,因为它不起作用: switch(particle) { case 0: glBegin(GL_TRIANGLE_STRIP); // STONE glNormal3f(0.0f, 0.0f, 1.0f); glTexCoord2d(1, 1); glVertex3f(x+size, y+size, 0.0f); // Top Right glTexCoord2d(0.5, 1); glVertex

说真的,我对这段代码很生气,因为它不起作用:

switch(particle) {
case 0:
    glBegin(GL_TRIANGLE_STRIP);         // STONE
        glNormal3f(0.0f, 0.0f, 1.0f);
        glTexCoord2d(1, 1); glVertex3f(x+size, y+size, 0.0f); // Top Right
        glTexCoord2d(0.5, 1); glVertex3f(x-size, y+size, 0.0f); // Top Left
        glTexCoord2d(1, 0.5); glVertex3f(x+size, y-size, 0.0f); // Bottom Right
        glTexCoord2d(0.5, 0.5); glVertex3f(x-size, y-size, 0.0f); // Bottom Left
    glEnd();
    break;
case 1:
    glBegin(GL_TRIANGLE_STRIP);         // EARTH
        glNormal3f(0.0f, 0.0f, 1.0f);
        glTexCoord2d(0.5, 0.5); glVertex3f(x+size, y+size, 0.0f); // Top Right
        glTexCoord2d(0, 0.5); glVertex3f(x-size, y+size, 0.0f); // Top Left
        glTexCoord2d(0.5, 0); glVertex3f(x+size, y-size, 0.0f); // Bottom Right
        glTexCoord2d(0, 0); glVertex3f(x-size, y-size, 0.0f); // Bottom Left
    glEnd();
    break;
}
案例0可以正常工作,但案例1不行,我不知道为什么。。。 这是图像(32x32,带有两个16x16子纹理):


假设案例0显然工作正常,那么案例1的纹理坐标是错误的。它们应该是:

glBegin(GL_TRIANGLE_STRIP);         // EARTH
    glNormal3f(0.0f, 0.0f, 1.0f);
    glTexCoord2d(0.5, 1.0); glVertex3f(x+size, y+size, 0.0f); // Top Right
    glTexCoord2d(0, 1.0); glVertex3f(x-size, y+size, 0.0f); // Top Left
    glTexCoord2d(0.5, 0.5); glVertex3f(x+size, y-size, 0.0f); // Bottom Right
    glTexCoord2d(0, 0.5); glVertex3f(x-size, y-size, 0.0f); // Bottom Left
glEnd();

假设案例0工作正常,那么案例1的纹理坐标是错误的。它们应该是:

glBegin(GL_TRIANGLE_STRIP);         // EARTH
    glNormal3f(0.0f, 0.0f, 1.0f);
    glTexCoord2d(0.5, 1.0); glVertex3f(x+size, y+size, 0.0f); // Top Right
    glTexCoord2d(0, 1.0); glVertex3f(x-size, y+size, 0.0f); // Top Left
    glTexCoord2d(0.5, 0.5); glVertex3f(x+size, y-size, 0.0f); // Bottom Right
    glTexCoord2d(0, 0.5); glVertex3f(x-size, y-size, 0.0f); // Bottom Left
glEnd();

定义“不工作?”屏幕上发生的事情,你认为不工作?什么也没有。在案例0中,应用程序呈现正确的子文本。但是在案例1中,不要直接渲染任何内容。我猜问题出在glTextCoord2d(…)中,但这些似乎是正确的:/如果将代码从案例0复制到案例1中会发生什么?然后正确渲染石头粒子:如果案例0是正确的(是吗?),那么案例1不应该是
TR=(0.5,1)TL=(0,1)BR=(0.5,0.5)BL=(0,0.5)
?定义“不工作?”你认为不工作的屏幕上发生了什么?什么也没有。在案例0中,应用程序呈现正确的子文本。但是在案例1中,不要直接渲染任何内容。我猜问题出在glTextCoord2d(…)中,但这些似乎是正确的:/如果将代码从案例0复制到案例1中会发生什么?然后正确渲染石头粒子:如果案例0是正确的(是吗?),那么案例1不应该是
TR=(0.5,1)TL=(0,1)BR=(0.5,0.5)BL=(0,0.5)