2012-04-19 20 views
0

に2Dテクスチャを使用します。JOGLは、私は次のコードを使用してJOGLで3Dキューブを作成した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

uは2Dテクスチャを持ち、uはgl.glTexCoord3f(0、4、4)を使用しています。 (それは3Dのように見えます)、第2に、テクスチャ座標の座標が1より高いかどうかわかりません。あなたはそれらの2つを再度確認できますか? – guness

+1

ええ、 'glTexCoord2f'を使うべきですし、通常はテクスチャ座標が' [0、1] 'の範囲にあります – Torious

+0

私はそれを受け入れることができるように答えを加えてください。私がglTexCoord2f()を[0,1]の範囲の座標で使用した場合はうまくいきました。そして、私はこの質問をd​​ownvoteする理由は何か分からない。 – Arkde

答えて

2

上記のコメントに基づいて回答します。

2Dテクスチャを使用しているので、glTexCoord2fを使用してください。また、テクスチャ座標は通常[0, 1]の範囲です。

関連する問題