【问题标题】:LWJGL cannot properly draw textureLWJGL 无法正确绘制纹理
【发布时间】:2015-11-04 18:21:03
【问题描述】:

当我尝试在四边形上绘制纹理(仅包含红色)时,我得到如下信息:enter image description here 它不涵盖所有四边形,仅涵盖其中的一部分。我尝试了不同的尺寸(当然,它们的宽度和高度是偶数),图片格式,尝试使用 Paint 和 Photoshop 制作,但总是得到相同的结果。

这是我的代码:

package test2;

import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_PROJECTION;
import static org.lwjgl.opengl.GL11.GL_QUADS;
import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D;
import static org.lwjgl.opengl.GL11.glBegin;
import static org.lwjgl.opengl.GL11.glClear;
import static org.lwjgl.opengl.GL11.glClearColor;
import static org.lwjgl.opengl.GL11.glColor3f;
import static org.lwjgl.opengl.GL11.glEnable;
import static org.lwjgl.opengl.GL11.glEnd;
import static org.lwjgl.opengl.GL11.glLoadIdentity;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import static org.lwjgl.opengl.GL11.glOrtho;
import static org.lwjgl.opengl.GL11.glTexCoord2f;
import static org.lwjgl.opengl.GL11.glVertex2i;

import java.io.IOException;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;

public class Main {
    public static void main(String[] args){
      try {
        Display.setFullscreen(true);
        Display.setTitle("test");
        Display.create();
    } catch (LWJGLException e) {
        e.printStackTrace();
    }

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1);
        glMatrixMode(GL_MODELVIEW);
        glEnable(GL_TEXTURE_2D);

        while(true){
            glClearColor(1, 1, 1, 1);
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

            Texture t = null;

            try {
                t = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("texture.png"));
            } catch (IOException e) {
                e.printStackTrace();
            }

            t.bind();

            glColor3f(1, 1, 1);
            glBegin(GL_QUADS);
            glTexCoord2f(0, 0);
              glVertex2i(100, 100);
            glTexCoord2f(0, 1);
              glVertex2i(100, 200);
            glTexCoord2f(1, 1);
              glVertex2i(200, 200);
            glTexCoord2f(1, 0);
              glVertex2i(200, 100);
            glEnd();


            Display.update();
            Display.sync(60);
        }
    }
}

【问题讨论】:

  • 从图像中我猜,矩形只覆盖屏幕的一部分,并且纹理应用于整个矩形。 (因为你绘制的四边形总是 100px 大小)
  • 纹理的大小是多少?我相信 Slick 可以将纹理填充到 2 种尺寸。

标签: java opengl lwjgl slick2d


【解决方案1】:

现在我发现,重量和高度呈现 (2^n) 个数字的纹理绘制得非常完美。但是我如何处理其他纹理?是否可以在OpenGL中正确使用它们?

【讨论】:

  • 正如我在上面的评论中提到的,是 Slick 将纹理填充为 2 的幂。使用其他东西来加载纹理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多