【发布时间】:2014-01-30 09:13:14
【问题描述】:
我在 Jogl 中遇到了纹理问题。我画了一个书架,当书架被检测为标记时,纹理应该改变。到目前为止,这是我的代码:
Texture book;
if (Library.touchTime != 0 && Library.marked.equals(name)){
long actTime = System.currentTimeMillis();
if (actTime - Library.touchTime <= 2000){
this.book = books_marked;
}
else{
Library.touchTime = 0;
Library.marked = "";
this.book = books;
}
}
book.enable();
book.bind();
//---- front --------------------------------------------------
gl.glBegin(GL.GL_QUADS);
normVector = front.getNorm();
gl.glNormal3f(normVector.getX(), normVector.getY(), normVector.getZ());
drawRect(gl, 0, 1, 2, 3);
gl.glEnd();
Books 和 books_marked 对象是构造函数的参数,它们的创建方式如下:
// ---- Load Book Texture -----------------------------------------------
try {
InputStream stream = getClass().getResourceAsStream("books.jpg");
data = TextureIO.newTextureData(stream, false, "jpg");
books = TextureIO.newTexture(data);
} catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
// -------------------------------------------------------------
// ---- Load Book_marked Texture -------------------------------------
try {
InputStream stream = getClass().getResourceAsStream("books_marked.jpg");
data = TextureIO.newTextureData(stream, false, "jpg");
books_marked = TextureIO.newTexture(data);
} catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
// -------------------------------------------------------------------------
我的意图是在 if 条件下实例化书本 Texture-Object,以便 bind() 命令会自动绑定正确的图片。但是纹理没有改变。有人知道我在这里做错了什么吗?
【问题讨论】:
-
您确定您的
if-condition 确实按预期工作吗? -
是的,我做到了。我在控制台上有输出显示运行时间,所以它工作正常。
-
很抱歉打扰您,但您仍在使用不再维护的 JOGL 1。宁可切换到 JOGL 2,即使它不足以解决您的问题。