NDK下的OpenGL程序怎么显示中文?怎么去获取中文的字库?传Canvas+Paint对象到NDK层?

解决方案 »

  1.   


    传了这个下去的话,肯定要得把画图的接口弄下去,因为文字写到图上才可以成为OPENGL的纹理。还有字库的类型接口,这样就太多太复杂了,有没更简单的方法?
      

  2.   


    JAVA层其实也获取不到的,必须借助那些封好的字库类JAVA层才可以访问到字库点阵的。
      

  3.   


    就是ANDROID下的跟字库有关的类库,比如TYPEFACE什么的,CANVAS类之类。
      

  4.   

    看到一位这样用!应该是可行的,但自己没试!!!我的Cygwin下的NDK环境配好了,并可以成功编译ndk目录下的sample目录下的例子并生成.so文件.我的warpo_test_SKiaView.cpp内容如下:#include "warpo_test_SKiaView.h"
    #include "SkCanvas.h"
    #include "SkPaint.h"
    #include "SkGraphics.h"
    #include "SkColor.h"
    #include "SkTypes.h"
    #include "GraphicsJNI.h"JNIEXPORT jint JNICALL Java_warpo_test_SKiaView_renderHello
    (JNIEnv *env, jobject thizz, jobject canvas)
    {   
    SkCanvas* canv = GraphicsJNI::getNativeCanvas(env, canvas);   
    if (!canv)   
    {   
    return 0;   
    }   
    SkPaint paint;   
    paint.setColor(SK_ColorRED);  
    canv->drawText("hello skia", 10, 20, 20, paint);return 1;
    }我的SKIA源代码在\Cygwin\home\Android\external\skia\include\core下面.比如里面有SkCanvas.h,SkBitmap.h文件等.
    我的Android.mk文件内容如下:
    # Android.mk by warpo, 20110526LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)MY_ANDROID_SOURCE:=/home/AndroidLOCAL_MODULE:=skiajniLOCAL_CPP_EXTENSION:=.cppLOCAL_SRC_FILES:=warpo_test_SKiaView.cppLOCAL_CPPFLAGS:= \
    -I $(MY_ANDROID_SOURCE)/frameworks/base/core/jni/android/graphics \
    -I $(MY_ANDROID_SOURCE)/external/skia/include/core \
    -I $(MY_ANDROID_SOURCE)/external/skia/include/images \
    -I $(MY_ANDROID_SOURCE)/frameworks/base/include \
    -I $(MY_ANDROID_SOURCE)/system/core/includeLOCAL_LDLIBS := -llog -lsgl -landroid_runtime -L/home/Android/out/skia/libinclude $(BUILD_SHARED_LIBRARY)我的make版本如下:
    $ make -v
    GNU Make 3.81但是$NDK/ndk-build后的结果是:
    Administrator@CHINA-WARPO /cygdrive/e/android-ndk-r5b/samples/SKiaTest
    $ $NDK/ndk-build
    Compile++ thumb : skiajni <= warpo_test_SKiaView.cpp
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:2:22: error: SkCanvas.h: No such file or directory
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:3:21: error: SkPaint.h: No such file or directory
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:4:24: error: SkGraphics.h: No such file or directory
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:5:21: error: SkColor.h: No such file or directory
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:6:21: error: SkTypes.h: No such file or directory
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:7:25: error: GraphicsJNI.h: No such file or directory
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp: In function 'jint Java_warpo_test_SKiaView_renderHello
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:12: error: 'SkCanvas' was not declared in this scope
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:12: error: 'canv' was not declared in this scope
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:12: error: 'GraphicsJNI' has not been declared
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:17: error: 'SkPaint' was not declared in this scope
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:17: error: expected ';' before 'paint'
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:18: error: 'paint' was not declared in this scope
    E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:18: error: 'SK_ColorRED' was not declared in this scope
    make: *** [/cygdrive/e/android-ndk-r5b/samples/SKiaTest/obj/local/armeabi/objs/skiajni/warpo_test_SKiaView.o] Error 1
    请教为什么找不到头文件呢.是Android.mk文件里的错吗.如果我把这些头文件放到Android.mk文件所在目录中就能找到了.
    请问是什么原因呢? 
     
     
      

  5.   

    相对应的帖子::http://topic.csdn.net/u/20110526/14/b12bafbc-f039-4773-b00a-8b48314df62a.html
      

  6.   

    用SKIA显示英文没什么问题,但显示中文就显示为“口口”了,不知道那个地方设置不对还是其它!!!
      

  7.   

    JAVA层只要调canv->drawText( )中英文都可以显示!!!NDK怎么指定中文字库什么的?怎么配置中文字体/大小,怎么选中文进CANVAS设备环境?
      

  8.   

     jni的中文字符串处理
    http://blog.csdn.net/beiai1014/archive/2007/04/12/1561857.aspx
      

  9.   

    Android NDK 下的宽字符编码转换及icu库的使用http://blog.csdn.net/xqhrs232/archive/2011/06/23/6563288.aspx
      

  10.   

    用SKIA的接口在NDK层算是把显示中文基本搞定,下一步就看怎么把中文整成OPENGL的纹理,如果可以OPENGL显示中文的问题也就解决了。
      

  11.   

    呜呜~  谁能告诉我,skia究竟是个什么东西,网上说能在android安装目录下找到相关文件,为什么我没找到呢?