次のコードを使用して、JOGL で 3D キューブを作成しました。
/**
* Function used to draw a cube
*/
public void drawCube(GL gl) {
gl.glBegin(gl.GL_QUADS);
//gl.glColor3f(1, 0, 0);
gl.glTexCoord3f(0, 0, 0);
gl.glVertex3f(0, 0, 0);
gl.glTexCoord3f(4, 0, 0);
gl.glVertex3f(1, 0, 0);
gl.glTexCoord3f(4, 4, 0);
gl.glVertex3f(1, 1, 0);
gl.glTexCoord3f(0, 4, 0);
gl.glVertex3f(0, 1, 0);
gl.glEnd();
gl.glBegin(gl.GL_QUADS);
gl.glTexCoord3f(0, 0, 0);
// gl.glColor3f(0, 1, 0);
gl.glVertex3f(0, 0, 0);
gl.glTexCoord3f(0, 4, 0);
gl.glVertex3f(0, 1, 0);
gl.glTexCoord3f(0, 4, 4);
gl.glVertex3f(0, 1, 1);
gl.glTexCoord3f(0, 0, 4);
gl.glVertex3f(0, 0, 1);
gl.glEnd();
gl.glBegin(gl.GL_QUADS);
// gl.glColor3f(0, 0, 1);
gl.glTexCoord3f(0, 4, 0);
gl.glVertex3f(0, 1, 0);
gl.glTexCoord3f(4, 4, 0);
gl.glVertex3f(1, 1, 0);
gl.glTexCoord3f(4, 4, 4);
gl.glVertex3f(1, 1, 1);
gl.glTexCoord3f(0, 4, 4);
gl.glVertex3f(0, 1, 1);
gl.glEnd();
gl.glBegin(gl.GL_QUADS);
// gl.glColor3f(1, 1, 0);
gl.glTexCoord3f(4, 4, 0);
gl.glVertex3f(1, 1, 0);
gl.glTexCoord3f(4, 0, 0);
gl.glVertex3f(1, 0, 0);
gl.glTexCoord3f(4, 0, 4);
gl.glVertex3f(1, 0, 1);
gl.glTexCoord3f(4, 4, 4);
gl.glVertex3f(1, 1, 1);
gl.glEnd();
gl.glBegin(gl.GL_QUADS);
// gl.glColor3f(1, 0, 1);
gl.glTexCoord3f(4, 0, 0);
gl.glVertex3f(1, 0, 0);
gl.glTexCoord3f(0, 0, 0);
gl.glVertex3f(0, 0, 0);
gl.glTexCoord3f(0, 0, 4);
gl.glVertex3f(0, 0, 1);
gl.glTexCoord3f(4, 0, 4);
gl.glVertex3f(1, 0, 1);
gl.glEnd();
gl.glBegin(gl.GL_QUADS);
// gl.glColor3f(0, 1, 1);
gl.glTexCoord3f(0, 4, 4);
gl.glVertex3f(0, 1, 1);
gl.glTexCoord3f(4, 4, 4);
gl.glVertex3f(1, 1, 1);
gl.glTexCoord3f(4, 0, 4);
gl.glVertex3f(1, 0, 1);
gl.glTexCoord3f(0, 0, 4);
gl.glVertex3f(0, 0, 1);
gl.glEnd();
立方体が画面上にあり、次のように各面にテクスチャを配置しようとしています。
public void init(GLAutoDrawable gld) {
//Init the gl
GL gl = gld.getGL();
//Init the glu
GLU glu = new GLU();
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(90, 1.6, 0.6, 30.0);
glu.gluLookAt(0, 0, 10, 0, 0, 0, 0, 2, 0);
gl.glEnable(gl.GL_TEXTURE_2D);
int id_textura = Gen_Textura(gl);
gl.glBindTexture(gl.GL_TEXTURE_2D, id_textura);
gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MAG_FILTER, gl.GL_LINEAR);
gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MIN_FILTER, gl.GL_LINEAR);
}
問題は、テクスチャが立方体の 6 つの面すべてではなく、1 つの面だけに表示されることです。
立方体のすべての面にテクスチャを描画するにはどうすればよいですか?