이 기사의 예는 OpenGl es 텍스처 매핑을 구현하는 방법을 설명합니다. 참조를 위해 모든 사람을 위해 공유하십시오. 세부 사항은 다음과 같습니다.
1. Glrenderer.java 파일 :
PACKED.OBVIAM.OPNDL; Glrender는 렌더러 {private square square; ();}} @override public void odrawframe (GL10 GL) {// 클리어 화면 및 깊이 버퍼 Gl.glclear (Gl10.gl_buffer_bit | gl10 .gl_depth_buffer_bit); gl.gltranslatef (0.0f, 0.0f, -5.0f); // 화면으로 5 개의 단위를 이동하고 있습니다. ); // 정사각형을 50%로 늘립니다. == 0) {// 높이로 나누기를 방지 = 1; Project Matrix Gl.glloadididIntity (); GL.GLMATRIXMODE (GL10.GL_MODELVIEW); .LoadGlTexture (GL, this.contex) (Gl10.gl_texture_2d); , 0.5f); // 검은 색 배경 Gl.gl.glenable (Gl10.gl_depth_teest); // 정말 좋은 관점 계산, GL10.gl_nicest);}}2. Square.java 파일 :
PACKED.OBA.NIO Android.graphics.bitmapfactory; android.opengl.glutils {private floatbuffer vertexbuffer; -1.0f, 1.0f, 0.0f, // v2 -top 왼쪽 1.0f, -1.0f, 0.0f, // v3 -bottom 오른쪽 1.0f, 1.0f // v4 -top 오른쪽}; TextureBuffer; // 텍스처 좌표를 고정하는 버퍼 개인 플로트 텍스처 [] = {// 정점의 맵핑 좌표 0.0f, 1. 0f, // 왼쪽 상단 (v2) 0.0f, 0.0f, // 왼쪽 (v1) 1.0f, 1.0f, // 상단 (v4) 1.0f, 0.0f // 오른쪽 (v3)}; // 플로트에는 4 바이트가 있으므로 각 좌표 4 바이트 바이트 버퍼 = 바이트 버퍼. bytebuffer.asfloatbuffer (); vertexbuffer를 vertexbuffer.put로 채우십시오 * 4); PARAM CONTEXT */ public void loadGlTexture (GL10 GL, Context Context) {// 텍스처로드 BitMap = BitMapfa Ctory.decoderesource (Context.getResources (), R.Drawable.Android); , 텍스처, 0); 그리고 우리의 배열 gl.glbindtexture (gl10.gl_texture_2d, 텍스처 생성 gl.gltexparameterf) .gl_nearest); Gl10.gl_texture_2d, gl10.gl_texture_mag_filter, gl10. gl_linear); 먹는 사람 Gl.gltexparameterf (Gl10.gl_texture_2d, gl10.gl_texture_wrap_t, gl10.gl_repeat); ; // BitMap.Recycle ();} / ** GL Context* / Public Void Draw (GL10 GL) {// 이전에 생성 된 텍스처 Gl.glbindtexture (Gl10.gl_texture_2d, 텍스처 [0]; // GL10.GL_VERTEX_ARRAY (GL10.GL_TEXTURE_COORD_ARRAY); vertex 버퍼 Gl.glvertexpointer (3, Gl10.gl_float, 0, gl.gltexcoordpointer); 0, vertices.length /3);3. Triangle.java 파일 :
PACKED.OBVIAM.OPENGL; float vertices [] = {-0.5f, -0.5f, 0.0f, // v1 -first vertex (x, y, z) 0.5f, -0.5f, 0.0f, // v2 -second vertex 0.5f, 0.5 f, 0.0f // v3 -third vertex // 1.0f, 0.5f, 0.0f // v3 vertex}; 할당 된 정점 * 4). / 버퍼 vertexbuffer.positation (0);} / ** gl context* / public void draw (gl10 gl) {gl.glenableclientState (gl10.gl_vertex_aray)의 시작 방법으로 커서 위치를 설정하십시오. // 배경의 색상 설정 // gl.glclercolor (0.0f, 0.0f, 0.5f); .gl_color_buffer_bit); 정점을 Triangle Strip Gl.gldrawArrays로 그립니다 (Gl10.gl_triangle_strip, 0, vertices.length / / 3);4. run.java 파일 :
PACKED.OBVIAM.OPENT.ACTIVER IMPARY ANDROID.OS.BINGLED; * *OpenGL보기 */ private glsurfaceview glsurfaceview;/ ** 활동이 처음 만들어 질 때 */ @override 공개 음성 (Super.oncreate); feature_no_title. / renderer는 // 현재 활동 컨텍스트 glsurfaceview.setrenderer (this)를 가진 기본 렌더러로 설정하십시오. .onresume (); glsurface.onresume ();
이 기사는 모든 사람의 Java 프로그램 설계에 도움이되기를 바랍니다.