java - 纹理坐标不起作用?

标签 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); 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 子纹理):

enter image description here

最佳答案

假设案例 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();

关于java - 纹理坐标不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6962397/

相关文章:

java - 无法解析方法 'List.of(java.lang.String, java.lang.String)'

python - Pyopengl - 从 VBO 绘制的几条线但是索引颜色 VBO 不起作用

c++ - OpenGL/GLUT 使乘坐顺畅的简单问题

ios - Openframeworks iOS 项目 : texture on ofSpherePrimitive breaks

swift - SceneKit:导出 UVSet 或将 UV 从一个对象复制到另一个对象

c++ - 在多个四边形上拉伸(stretch)一个纹理

java - Spring Security 5,资源上没有 "Access Control Allow Origin" header

java - 我的 Activity 因奇怪的原因而崩溃

java - 在同级模块之间共享动态生成的属性

java - 如何在 Java 3D 中旋转对象?