读书人

Android 3D与JNI组合的小例子【转】

发布时间: 2012-09-01 09:33:02 作者: rapoo

Android 3D与JNI结合的小例子【转】

Android 3D与JNI组合的小例子【转】Android 3D与JNI组合的小例子【转】Android 3D与JNI组合的小例子【转】Android 3D与JNI组合的小例子【转】?

    ? ?? ???#include <jni.h>
    ? ?? ???#include <android/log.h>

    ? ?? ???#include <GLES2/gl2.h>
    ? ?? ???#include <GLES2/gl2ext.h>
    ? ?? ???#include <GLES/gl.h>

    ? ?? ???#include <stdio.h>
    ? ?? ???#include <stdlib.h>
    ? ?? ???#include <math.h>


    ? ?? ???const GLfloat gTriangleVertices[] = {
    ? ?? ?? ?? ?? ? -0.5f, -0.5f, 0.5f,
    ? ?? ?? ?? ?? ? 0.5f, -0.5f,0.5f,
    ? ?? ?? ?? ?? ? 0.0f,-0.5f, 1.0f,
    ? ?? ?? ?? ?? ? 0.0f, 0.0f, 0.5f,
    ? ?? ???};

    ? ?? ???const GLfloat _colorArray[] = {
    ? ?? ?? ?? ?? ?? ?? ?? ?1.0f,0.0f,0.0f,1.0f,
    ? ?? ?? ?? ?? ?? ?? ?? ?0.0f,1.0f,0.0f,1.0f,
    ? ?? ?? ?? ?? ?? ?? ?? ?0.0f,0.0f,1.0f,1.0f,
    ? ?? ?? ?? ?? ?? ?? ?? ?1.0f,1.0f,1.0f,1.0f,
    ? ?? ?? ? };

    ? ?? ???const GLbyte _indexArray[] = {
    ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 0,1,3,
    ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 0,2,1,
    ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 0,3,2,
    ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 1,2,3,
    ? ?? ???};

    ? ?? ?? ?GLfloat _xAngle = 0.0f;
    ? ?? ?? ?GLfloat _yAngle = 0.0f;

    ? ?? ???extern "C" {
    ? ?? ?? ?? ?? ? JNIEXPORT void JNICALL Java_com_geolo_android_MyRenderer_nativeSurfaceCreated(JNIEnv * env, jobject obj);
    ? ?? ?? ?? ?? ? JNIEXPORT void JNICALL Java_com_geolo_android_MyRenderer_nativeSurfaceChanged(JNIEnv * env, jobject obj,??jint width, jint height);
    ? ?? ?? ?? ?? ? JNIEXPORT void JNICALL Java_com_geolo_android_MyRenderer_nativeDrawFrame(JNIEnv * env, jobject obj);
    ? ?? ?? ?? ?? ? JNIEXPORT void JNICALL Java_com_geolo_android_MyGLSurfaceView_setXYangle(JNIEnv * env, jobject obj,jfloat x , jfloat y);
    ? ?? ???};

    ? ?? ???JNIEXPORT void JNICALL Java_com_geolo_android_MyRenderer_nativeSurfaceCreated(JNIEnv * env, jobject obj){
    ? ?? ?? ?? ?? ??
    ? ?? ???}

    ? ?? ???JNIEXPORT void JNICALL Java_com_geolo_android_MyRenderer_nativeSurfaceChanged(JNIEnv * env, jobject obj,jint w,jint h){

    ? ?? ???}

    ? ?? ???JNIEXPORT void JNICALL Java_com_geolo_android_MyRenderer_nativeDrawFrame(JNIEnv * env, jobject obj){
    ? ?? ?? ?? ?? ? glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    ? ?? ?? ?? ?? ? //glClear( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
    ? ?? ?? ???// glVertexAttribPointer(3, 2, GL_FLOAT, GL_FALSE, 0, gTriangleVertices);
    ? ?? ?? ???// glColorAttribPointer(4 , GL_FLOAT , 0, _colorArray );
    ? ?? ?? ???// glDrawArrays(GL_TRIANGLES, 0, 3);

    ? ?? ?? ???glClear(GL_COLOR_BUFFER_BIT);
    ? ?? ? //glLoadIdentity();

    ? ?? ?? ???glRotatef(_xAngle, 0.5f, 0.0f, 0.0f);
    ? ?? ?? ???glRotatef(_yAngle, 0.0f, 0.5f, 0.0f);

    ? ?? ?? ???//顶点
    ? ?? ?? ???glVertexPointer(3, GL_FLOAT, 0, gTriangleVertices);

    ? ?? ?? ???//顶点颜色
    ? ?? ?? ???glColorPointer(4, GL_FLOAT, 0, _colorArray);


    ? ?? ?? ???glDrawElements(GL_TRIANGLES, 12, GL_UNSIGNED_BYTE, _indexArray);
    ? ?? ???}

    ? ?? ???JNIEXPORT void JNICALL Java_com_geolo_android_MyGLSurfaceView_setXYangle(JNIEnv * env, jobject obj,jfloat x , jfloat y){
    ? ?? ?? ???_xAngle = x;
    ? ?? ? _yAngle = y;
    ? ?? ???}
复制代码


第二重要的部分是:Android.mk


view plaincopy to clipboardprint?

读书人网 >Android

热点推荐