【发布时间】:2014-10-29 12:02:48
【问题描述】:
我正在尝试将纹理过滤器重复应用于我的立方体,但我无法解决问题
谁能帮我解决这个问题
这是我的一段代码
import java.io.IOException;
import java.io.InputStream;
import javax.media.opengl.GL;
import javax.media.opengl.GL2;
import com.jogamp.opengl.util.texture.Texture;
import com.jogamp.opengl.util.texture.TextureIO;
/**
* Box.java - a class implementation representing a Box object in OpenGL Oct 16,
* 2013 rdb - derived from Box.cpp
*/
public class BoxNew extends Object3D {
// --------- instance variables -----------------
float length;
// float replication = 1.0f; // # copies of texture on quad in each
// direction
// float offset = 0.0f;
// Texture tex;
// ------------- constructor -----------------------
public BoxNew() {
length = 1;
}
// ------------- drawPrimitives ---------------------------
public void drawPrimitives() {
JOGL.gl.glPushMatrix();
JOGL. gl.glClear( GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT );
tex=setTexture("picc.jpg");
tex.enable(JOGL.gl);
//tex.setTexParameteri(JOGL.gl, GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR);
//tex.setTexParameteri(JOGL.gl, GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR);
tex.setTexParameteri(JOGL.gl, GL2.GL_REPEAT,GL2.GL_TEXTURE_WRAP_T);
tex.bind(JOGL.gl);
JOGL.gl.glBegin(GL2.GL_QUADS);
// Front Face
JOGL.gl.glNormal3f(0.0f, 0.0f, 1.0f);
JOGL.gl.glTexCoord2f(0.0f, 0.0f);
JOGL.gl.glVertex3f(-1.0f, -1.0f, 1.0f);
JOGL.gl.glTexCoord2f(1.0f, 0.0f);
JOGL.gl.glVertex3f(1.0f, -1.0f, 1.0f);
JOGL.gl.glTexCoord2f(1.0f, 1.0f);
JOGL.gl.glVertex3f(1.0f, 1.0f, 1.0f);
JOGL.gl.glTexCoord2f(0.0f, 1.0f);
JOGL.gl.glVertex3f(-1.0f, 1.0f, 1.0f);
// Back Face
JOGL.gl.glNormal3f(0.0f, 0.0f, -1.0f);
JOGL.gl.glTexCoord2f(1.0f, 0.0f);
JOGL.gl.glVertex3f(-1.0f, -1.0f, -1.0f);
JOGL.gl.glTexCoord2f(1.0f, 1.0f);
JOGL.gl.glVertex3f(-1.0f, 1.0f, -1.0f);
JOGL.gl.glTexCoord2f(0.0f, 1.0f);
JOGL.gl.glVertex3f(1.0f, 1.0f, -1.0f);
JOGL.gl.glTexCoord2f(0.0f, 0.0f);
JOGL.gl.glVertex3f(1.0f, -1.0f, -1.0f);
// Top Face
JOGL.gl.glNormal3f(0.0f, 1.0f, 0.0f);
JOGL.gl.glTexCoord2f(0.0f, 1.0f);
JOGL.gl.glVertex3f(-1.0f, 1.0f, -1.0f);
JOGL.gl.glTexCoord2f(0.0f, 0.0f);
JOGL.gl.glVertex3f(-1.0f, 1.0f, 1.0f);
JOGL.gl.glTexCoord2f(1.0f, 0.0f);
JOGL.gl.glVertex3f(1.0f, 1.0f, 1.0f);
JOGL.gl.glTexCoord2f(1.0f, 1.0f);
JOGL.gl.glVertex3f(1.0f, 1.0f, -1.0f);
// Bottom Face
JOGL.gl.glNormal3f(0.0f, -1.0f, 0.0f);
JOGL.gl.glTexCoord2f(1.0f, 1.0f);
JOGL.gl.glVertex3f(-1.0f, -1.0f, -1.0f);
JOGL.gl.glTexCoord2f(0.0f, 1.0f);
JOGL.gl.glVertex3f(1.0f, -1.0f, -1.0f);
JOGL.gl.glTexCoord2f(0.0f, 0.0f);
JOGL.gl.glVertex3f(1.0f, -1.0f, 1.0f);
JOGL.gl.glTexCoord2f(1.0f, 0.0f);
JOGL.gl.glVertex3f(-1.0f, -1.0f, 1.0f);
// Right face
JOGL.gl.glNormal3f(1.0f, 0.0f, 0.0f);
JOGL.gl.glTexCoord2f(1.0f, 0.0f);
JOGL.gl.glVertex3f(1.0f, -1.0f, -1.0f);
JOGL.gl.glTexCoord2f(1.0f, 1.0f);
JOGL.gl.glVertex3f(1.0f, 1.0f, -1.0f);
JOGL.gl.glTexCoord2f(0.0f, 1.0f);
JOGL.gl.glVertex3f(1.0f, 1.0f, 1.0f);
JOGL.gl.glTexCoord2f(0.0f, 0.0f);
JOGL.gl.glVertex3f(1.0f, -1.0f, 1.0f);
// Left Face
JOGL.gl.glNormal3f(-1.0f, 0.0f, 0.0f);
JOGL.gl.glTexCoord2f(0.0f, 0.0f);
JOGL.gl.glVertex3f(-1.0f, -1.0f, -1.0f);
JOGL.gl.glTexCoord2f(1.0f, 0.0f);
JOGL.gl.glVertex3f(-1.0f, -1.0f, 1.0f);
JOGL.gl.glTexCoord2f(1.0f, 1.0f);
JOGL.gl.glVertex3f(-1.0f, 1.0f, 1.0f);
JOGL.gl.glTexCoord2f(0.0f, 1.0f);
JOGL.gl.glVertex3f(-1.0f, 1.0f, -1.0f);
JOGL.gl.glEnd();
JOGL.gl.glPopMatrix();
tex.disable(JOGL.gl);
}
}
【问题讨论】:
-
到底是什么问题?您启用纹理过滤的代码已被注释掉。
-
我的问题是我必须对我创建的盒子应用重复纹理