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

xqhrs232 2011-05-24 11:24:09
NDK下的OpenGL程序怎么显示中文?怎么去获取中文的字库?传Canvas+Paint对象到NDK层?
...全文
328 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengwlmo 2011-08-17
  • 打赏
  • 举报
回复
呜呜~ 谁能告诉我,skia究竟是个什么东西,网上说能在android安装目录下找到相关文件,为什么我没找到呢?
xqhrs232 2011-06-23
  • 打赏
  • 举报
回复
用SKIA的接口在NDK层算是把显示中文基本搞定,下一步就看怎么把中文整成OPENGL的纹理,如果可以OPENGL显示中文的问题也就解决了。
xqhrs232 2011-06-23
  • 打赏
  • 举报
回复
Android NDK 下的宽字符编码转换及icu库的使用

http://blog.csdn.net/xqhrs232/archive/2011/06/23/6563288.aspx
xqhrs232 2011-06-22
  • 打赏
  • 举报
回复
qthsrs232 2011-06-22
  • 打赏
  • 举报
回复
JAVA层只要调canv->drawText( )中英文都可以显示!!!

NDK怎么指定中文字库什么的?怎么配置中文字体/大小,怎么选中文进CANVAS设备环境?
xqhrs232 2011-06-22
  • 打赏
  • 举报
回复
用SKIA显示英文没什么问题,但显示中文就显示为“口口”了,不知道那个地方设置不对还是其它!!!
xqhrs232 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xqhrs232 的回复:]
看到一位这样用!应该是可行的,但自己没试!!!


C/C++ code


我的Cygwin下的NDK环境配好了,并可以成功编译ndk目录下的sample目录下的例子并生成.so文件.

我的warpo_test_SKiaView.cpp内容如下:

#include "warpo_test_SKiaView.h"
#include "SkCanvas.h"
#inclu……
[/Quote]


相对应的帖子::http://topic.csdn.net/u/20110526/14/b12bafbc-f039-4773-b00a-8b48314df62a.html
xqhrs232 2011-05-27
  • 打赏
  • 举报
回复
看到一位这样用!应该是可行的,但自己没试!!!



我的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, 20110526

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

MY_ANDROID_SOURCE:=/home/Android

LOCAL_MODULE:=skiajni

LOCAL_CPP_EXTENSION:=.cpp

LOCAL_SRC_FILES:=warpo_test_SKiaView.cpp

LOCAL_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/include

LOCAL_LDLIBS := -llog -lsgl -landroid_runtime -L/home/Android/out/skia/lib

include $(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文件所在目录中就能找到了.
请问是什么原因呢?




「已注销」 2011-05-27
  • 打赏
  • 举报
回复
那就用这些类库获得字库点阵,传给底层
[Quote=引用 7 楼 xqhrs232 的回复:]

引用 6 楼 crystal28 的回复:
"封好的字库类"指的什么,从哪里可以得到


就是ANDROID下的跟字库有关的类库,比如TYPEFACE什么的,CANVAS类之类。
[/Quote]
xqhrs232 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 crystal28 的回复:]
"封好的字库类"指的什么,从哪里可以得到
[/Quote]

就是ANDROID下的跟字库有关的类库,比如TYPEFACE什么的,CANVAS类之类。
「已注销」 2011-05-25
  • 打赏
  • 举报
回复
把点阵数据的指针传下去?
xqhrs232 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 xqhrs232 的回复:]
NDK下的OpenGL程序怎么显示中文?怎么去获取中文的字库?传Canvas+Paint对象到NDK层?
[/Quote]

传了这个下去的话,肯定要得把画图的接口弄下去,因为文字写到图上才可以成为OPENGL的纹理。

还有字库的类型接口,这样就太多太复杂了,有没更简单的方法?
「已注销」 2011-05-25
  • 打赏
  • 举报
回复
"封好的字库类"指的什么,从哪里可以得到
xqhrs232 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 crystal28 的回复:]
把点阵数据的指针传下去?
[/Quote]

JAVA层其实也获取不到的,必须借助那些封好的字库类JAVA层才可以访问到字库点阵的。
xqhrs232 2011-05-24
  • 打赏
  • 举报
回复
其实也就是想知道怎么获取系统自带的中文字库的点阵数据!!!
xqhrs232 2011-05-24
  • 打赏
  • 举报
回复
很少的中文显示用点阵字库是可以解决,但太多中文的话就不知道怎么解决了.

80,361

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧