纹理就是给物体表面添加图片,色彩之类,可以认为是上色。
基本步骤:
- 打开纹理开关
- 创建纹理
- 绑定纹理
- 设置纹理参数
- 生成纹理
- 设置纹理顶点数据
@Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { // 告诉系统对透视进行修正 gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); // 黑色背景 gl.glClearColor(0, 0, 0, 0); // 启用阴影平滑 gl.glShadeModel(GL10.GL_SMOOTH); // 清除深度缓存 gl.glClearDepthf(one); // 启用深度测试 gl.glEnable(GL10.GL_DEPTH_TEST); // 所做深度测试的类型 gl.glDepthFunc(GL10.GL_LEQUAL); gl.glEnable(GL10.GL_TEXTURE_2D); // 创建纹理 gl.glGenTextures(1, textureids, 0); // 绑定要使用的纹理 gl.glBindTexture(GL10.GL_TEXTURE_2D, textureids[0]); // 生成纹理 GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); // 线性滤波 gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR); gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR); }
在surfacecreated中启用纹理设置,创建纹理,生成纹理,设置过滤属性
@Override public void onDrawFrame(GL10 gl) { // 清除深度和颜色缓存 gl.glClear(GL10.GL_DEPTH_BUFFER_BIT | GL10.GL_COLOR_BUFFER_BIT); gl.glLoadIdentity(); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); //启用纹理 gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); gl.glVertexPointer(3, GL10.GL_FIXED, 0, vertexBuffer); //设置纹理数组 gl.glTexCoordPointer(2, GL10.GL_FIXED, 0, texBuffer); // //向z轴里移入6.0f gl.glTranslatef(0.0f, 0.0f, -6.0f); // 设置3个方向的旋转 gl.glRotatef(xrot, one, 0.0f, 0.0f); gl.glRotatef(yrot, 0.0f, one, 0.0f); gl.glRotatef(zrot, 0.0f, 0.0f, one); // 绘制正方体6个面,这时每个面都会画好纹理 for (