안녕하세요ㅎ
openGL을 사용해서 텍스쳐 맵핑을 하려고 합니다.
아직 초보라 어느 클래스 어느 함수에서 맵핑하는것을 진행해야 하는지 감이 안오네요ㅠ
책 예제와 검색을 하면서 소스를 조금 짜 보았는데
도움 주시면 감사하겠습니다


제 소스입니다.

package com.example.android.apis;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.opengl.GLSurfaceView;
import android.opengl.GLU;
import android.opengl.GLUtils;
import android.os.Bundle;

 

public class ApiDemos extends Activity {
    /** Called when the activity is first created. */

 private GLSurfaceView mGLSurfaceView;
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.kang);
        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
  bitmap.recycle();
   
       
        mGLSurfaceView = new GLSurfaceView(this); //내부적으로 GL요청을 처리함
        mGLSurfaceView.setRenderer(new GLRenderer()); //프레임에 그림을 그림
        setContentView(mGLSurfaceView);
       
       
   }
 
 
}

class GLRenderer implements GLSurfaceView.Renderer{
 final static int WIDTH = 320;
 final static int HEIGHT = 480;
 
 
//사각형의 정점을 정의
 float[] rec = new float[]{
   -0.5f, -0.5f, 0, //bottom left
   -0.5f, 0.5f, 0,  //top left
   0.5f, -0.5f, 0,  //bottom right
   0.5f, 0.5f, 0};  //top right
 

 FloatBuffer recVB;
 
 
 float xrot = 0.0f; //x축
 float yrot = 0.0f; //y축

 
 public GLRenderer(){
  recVB = createFloatBuffer(rec);
  
 }
 
 
 @Override
 public void onDrawFrame(GL10 gl){
  gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
  gl.glColor4f(1, 1, 1, 1); //사각형
  
  //배열을 Buffer클래스에 넘겨줘야한다
  //배열을 버퍼로 만든다
  gl.glVertexPointer(3, GL10.GL_FLOAT, 0, recVB);
  gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
  
  
  //이미지처리
 /* gl.glPushMatrix(); //push matrix
  
  gl.glRotatef(xrot++, 10.0f, 0.0f, 0.0f); //x 축 rotate
  gl.glRotatef(yrot++, 0.0f, 10.0f, 0.0f); //y 축 rotate
  gl.glTranslatef(d++, f++, e++); //translate
 
  //gl.glScalef(a++, b++, c++); //scale
 */
  
  gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
 // gl.glPopMatrix(); //pop matrix
  
  //택스쳐 맵핑
  gl.glEnable(GL10.GL_TEXTURE_2D);
  int[] textures = new int[1];
  gl.glGenTextures(1, textures, 0);
  gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
        gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
  gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, recVB);
    
 }
 
 @Override
 public void onSurfaceChanged(GL10 gl, int width, int height){
  
 }
 @Override
 public void onSurfaceCreated(GL10 gl, EGLConfig config) {
  // TODO Auto-generated method stub
  gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); //색상버퍼 클리어(바탕)
  gl.glViewport(0, 0, WIDTH, HEIGHT); //카메라설정
  gl.glMatrixMode(GL10.GL_PROJECTION);
  gl.glLoadIdentity(); 
  
  GLU.gluOrtho2D(gl, -1.0f, 1.0f, -1.0f, 1.0f);
 }
 
 protected FloatBuffer createFloatBuffer(float array[]){
  ByteBuffer byteBuffer = ByteBuffer.allocateDirect(array.length<<2);
  byteBuffer.order(ByteOrder.nativeOrder());
  FloatBuffer floatBuffer = byteBuffer.asFloatBuffer();
  floatBuffer.put(array);
  floatBuffer.position(0);
  return floatBuffer;
  
 }
}