前面一篇中简述了基本图形的绘制,并且给出着色,下面看看如何在一个立方体上面覆盖一层纹理,就像在地板上贴了一层地板砖的效果.
同样新建一个android studio工程,PumpKinBasicTexture工程:
主类如下:
package org.pumpkin.pumpkinbasictexture;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import org.pumpkin.pumpkinbasictexture.texture.DurianTextureRender;
public class PumpKinMainActivity extends Activity {
private GLSurfaceView glSurfaceView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
glSurfaceView=new GLSurfaceView(this);
glSurfaceView.setRenderer(new DurianTextureRender(this));
setContentView(glSurfaceView);
}
}
绘制纹理类如下:
package org.pumpkin.pumpkinbasictexture.texture;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.opengl.GLUtils;
import org.pumpkin.pumpkinbasictexture.R;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import javax.microedition.khronos.opengles.GL10;
/**
* Created by Administrator on 2016/5/4.
*/
public class TextureCube {
private FloatBuffer vertexBuffer;
private FloatBuffer texBuffer;
private float[] vertices={
-1.0f, -1.0f, 0.0f, // 0. left-bottom-front
1.0f, -1.0f, 0.0f, // 1. right-bottom-front
-1.0f, 1.0f, 0.0f, //