私はアキューブを持っていて、すべての面にテクスチャーを付けることになっています。私はこれを netbeans プロジェクトで成功させましたが、最終的にはそれが日食で行われることを知りました。最初は大したことではないように思えました。しかし問題は、同じコードが Eclipse では機能しないということです。立方体は表示されていますが、テクスチャは適用されていません。コードはこちらです。
public void init(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2(); // Get the GL pipeline object this
// GLAutoDrawable uses
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set clear color to black
gl.glClearDepth(1.0f); // Set the depth value to 1.0 (the maximum value),
// when the depth buffer is cleared
gl.glEnable(GL_DEPTH_TEST); //Enable depth test
gl.glEnable(GL_LIGHT0);
gl.glEnable(GL_LIGHTING);
try {
texImg = readImage("PWelshDragon.jpg");
} catch (IOException ex) {
// Logger.getLogger(CG0T.class.getName()).log(Level.SEVERE, null, ex);
}
gl.glDisable(GL.GL_TEXTURE_2D);
gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGB, texWidth ,texHeight, 0, GL.GL_RGB, GL. GL_UNSIGNED_BYTE, texImg);
gl.glEnable(GL.GL_TEXTURE_2D);
}
表示コードで。
public void display(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
gl.glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode(GL_MODELVIEW);
gl.glLoadIdentity();
gl.glRotated(30, 1, 1, 1);
gl.glBegin(GL_QUADS);
gl.glNormal3f(1.0f, 0.0f, 0.0f);
gl.glVertex3f(1.0f, 1.0f, 1.0f);gl.glTexCoord2d(0.0f, 0.0f);
gl.glVertex3f(1.0f, -1.0f, 1.0f);gl.glTexCoord2d(1.0f, 0.0f);
gl.glVertex3f(1.0f, -1.0f, -1.0f);gl.glTexCoord2d(1.0f, 1.0f);
gl.glVertex3f(1.0f, 1.0f, -1.0f);gl.glTexCoord2d(0.0f, 1.0f);
gl.glNormal3f(-1.0f, 0.0f, 0.0f);
gl.glVertex3f(-1.0f, 1.0f, 1.0f);gl.glTexCoord2d(0.0f, 0.0f);
gl.glVertex3f(-1.0f, 1.0f, -1.0f);gl.glTexCoord2d(1.0f, 0.0f);
gl.glVertex3f(-1.0f, -1.0f, -1.0f);gl.glTexCoord2d(1.0f, 1.0f);
gl.glVertex3f(-1.0f, -1.0f, 1.0f);gl.glTexCoord2d(0.0f, 1.0f);
gl.glNormal3f(0.0f, 1.0f, 0.0f);
gl.glVertex3f(1.0f, 1.0f, 1.0f);gl.glTexCoord2d(0.0f, 0.0f);
gl.glVertex3f(1.0f, 1.0f, -1.0f);gl.glTexCoord2d(1.0f, 0.0f);
gl.glVertex3f(-1.0f, 1.0f, -1.0f);gl.glTexCoord2d(1.0f, 1.0f);
gl.glVertex3f(-1.0f, 1.0f, 1.0f);gl.glTexCoord2d(0.0f, 1.0f);
gl.glNormal3f(0.0f, -1.0f, 0.0f);
gl.glVertex3f(1.0f, -1.0f, 1.0f);gl.glTexCoord2d(0.0f, 0.0f);
gl.glVertex3f(-1.0f, -1.0f, 1.0f);gl.glTexCoord2d(1.0f, 0.0f);
gl.glVertex3f(-1.0f, -1.0f, -1.0f);gl.glTexCoord2d(1.0f, 1.0f);
gl.glVertex3f(1.0f, -1.0f, -1.0f);gl.glTexCoord2d(0.0f, 1.0f);
gl.glNormal3f(0.0f, 0.0f, 1.0f);
gl.glVertex3f(1.0f, 1.0f, 1.0f);gl.glTexCoord2d(0.0f, 0.0f);
gl.glVertex3f(-1.0f, 1.0f, 1.0f);gl.glTexCoord2d(1.0f, 0.0f);
gl.glVertex3f(-1.0f, -1.0f, 1.0f);gl.glTexCoord2d(1.0f, 1.0f);
gl.glVertex3f(1.0f, -1.0f, 1.0f);gl.glTexCoord2d(0.0f, 1.0f );
gl.glNormal3f(0.0f, 0.0f, -1.0f);
gl.glVertex3f(1.0f, 1.0f, -1.0f);gl.glTexCoord2d(0.0f, 0.0f);
gl.glVertex3f(1.0f, -1.0f, -1.0f);gl.glTexCoord2d(1.0f, 0.0f);
gl.glVertex3f(-1.0f, -1.0f, -1.0f);gl.glTexCoord2d(1.0f, 1.0f);
gl.glVertex3f(-1.0f, 1.0f, -1.0f);gl.glTexCoord2d(0.0f, 1.0f);
gl.glEnd();
}
texImg で値を取得していますが、適用されない理由がわかりません。