如何在JOGL中纹理不同的平面

时间:2015-11-22 14:11:25

标签: opengl 3d textures jogl texture-mapping

我在JOGL中创建了6个飞机作为一个房间,现在我想用不同的图像对它们进行纹理化,所以我怎样才能在每个平面上做到这一点?还有什么推荐的纹理图像资源,我可以用它来装饰房间?

谢谢。

public void render(GL2 gl) {
  gl.glClear(GL2.GL_COLOR_BUFFER_BIT|GL2.GL_DEPTH_BUFFER_BIT);
  gl.glLoadIdentity();
  camera.view(glu);                 // Orientate the camera
  doLight(gl);                      // Place the light

doLight2(gl);

if (axes.getSwitchedOn()) 
  axes.display(gl, glut);

if (objectsOn) {                  // Render the objects
  gl.glPushMatrix();
  //Making the room.
    double planeParam = animationScene.getParam(animationScene.PLANE_PARAM);
    //red x, blue z, green y.
    gl.glTranslated(planeParam,0,0);
    //Base
   plane.renderDisplayList(gl);
   //Back wall
    gl.glTranslated(0,25,-25);
    gl.glRotated(90, 1, 0, 0);
    plane.renderDisplayList(gl);
    //Right wall
    gl.glTranslated(25,25,0);
    gl.glRotated(90, 0, 0, 1);
    plane.renderDisplayList(gl);
    //Front wall
    gl.glTranslated(25,25,0);
    gl.glRotated(90, 0, 0, 1);
    plane.renderDisplayList(gl);
    //Roof 
    gl.glTranslated(0,25,-25);
    gl.glRotated(90, 1, 0, 0);
    plane.renderDisplayList(gl);

    //Left wall 
    gl.glTranslated(25,25,0);
    gl.glRotated(90, 0, 0, 1);
    plane.renderDisplayList(gl);


  gl.glPopMatrix();


}

1 个答案:

答案 0 :(得分:0)

您可以使用TextureIO(推荐)或AWTTextureIO从图像文件创建纹理。

您可以使用包含所有纹理的单个图像并将其作为单个纹理进行管理,也可以为每个纹理使用一个图像。

您必须在使用之前绑定纹理(请参阅Texture.bind()或glBindTexture)。

您必须为顶点指定一些纹理坐标。如果使用立即模式,请使用glTexCoord。