JOGL中的纹理二次曲面

时间:2011-05-06 12:04:29

标签: opengl textures jogl glu

我无法设计一个glu Quadric(gluSphere): 我得到的不是纹理,是纹理的平均颜色。

gl.glEnable(GL.GL_DEPTH_TEST);
gl.glEnable(GL.GL_BLEND);
gl.glEnable(GL.GL_TEXTURE_GEN_S); 
gl.glEnable(GL.GL_TEXTURE_GEN_T); 

sunTexture = TextureIO.newTexture(new File("sun.jpg"),false);

float[] rgba = {1f, 1f, 1f};
gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT, rgba, 0);
gl.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, rgba, 0);
gl.glMaterialf(GL.GL_FRONT, GL.GL_SHININESS, 0.5f);

sunTexture.enable();
sunTexture.bind();
    GLUquadric sun = glu.gluNewQuadric();
    glu.gluQuadricTexture(sun, true);
    glu.gluSphere(sun, 5, DETAIL, DETAIL);
sunTexture.disable();

2 个答案:

答案 0 :(得分:1)

我发现了问题: 我订了     gl.glFrustum(-20,20,-20,20,0.1,400);

设定后    gl.glFrustum(-20,20,-20,20,1,400);

看起来没问题。

答案 1 :(得分:0)

由于GLU自己生成纹理坐标并将它们作为glTexCoord传输,我认为,不需要启用texcoord生成(GL_TEXTURE_GEN_S / T)。我想GLU生成的texCoords会被texgen的那些覆盖。

我也看到,你向glMaterial提交了一个三个浮点数组,它需要RGBA(4个浮点数)。但是因为我使用C ++,我可能错了,这在JoGL中有效。