如何加载FTGLES(或任何其他文本渲染)为Android [英] How to load FTGLES (or any other text rendering) for Android

查看:421
本文介绍了如何加载FTGLES(或任何其他文本渲染)为Android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我负责编写使用的OpenGL ES 1.0应用程序(或1.1,如果必要的话),我需要能够呈现在屏幕上的文字。位图的文字和纹理字体是不是真的在这里选择。我知道iOS的有FTGLES,其中指出,Android的支持是在不久的将​​来,但考虑到截止日期对我的项目,我需要一个答案(无论它的工作原理/可以工作/不工作的/ etc)比更快不久的将​​来很遗憾。

我经过这里的职位等地冲刷,并没有发现任何东西,帮助。我已经使用JNI和NDK在Eclipse中尝试过,而且也没有什么有用的都来自这一点。我会非常AP preciate如果有人能在正确的方向指向我。我也试过jumpcore,但应用程序是不是本机code,这一切都用Java编写的。我有点惊讶有人不是已经解决了这个(在我可以现在发现了一种时尚)。由于任何和所有帮助我找到了一个解决方案。

编辑:

在JNI文件夹,我把源代码(在其各自的子文件夹)的FreeType的和ftgles。我也不得不编写不同版本的源码,使RTREE的。我陷入了最初是因为我是编译错误的文件。但愿这被证明是有帮助的。

下面是原生code中的FTGLES部分生成文件:

 包括$(CLEAR_VARS)

包括$(JNI_DIR)/freetype/Android.mk

LOCAL_PATH:= $(JNI_DIR)

包括$(CLEAR_VARS)

GLES_PATH:= $(JNI_DIR)/有/
FTGL_PATH:= ftgles
FREETYPE_PATH:=的FreeType
GLU_PATH:= $(FTGL_PATH)/src/iGLU-1.0.0

FULL_FTGL_PATH:= $(LOCAL_PATH)/ $(FTGL_PATH)
FULL_FT_PATH:= $(LOCAL_PATH)/ $(FREETYPE_PATH)
FULL_GLU_PATH:= $(LOCAL_PATH)/ $(GLU_PATH)

FTGL_INCLUDE:= -I $(FULL_FTGL_PATH)-I $(FULL_FTGL_PATH)/ src目录-I $(FULL_FTGL_PATH)/ src目录/ FTGL -I $(FULL_FTGL_PATH)/ src目录/ FTFont -I $(FULL_FTGL_PATH)/ src目录/ FTGlyph -I $ (FULL_FTGL_PATH)/ src目录/ FTLayout
FREETYPE_INCLUDE:= -I $(FULL_FT_PATH)-I $(FULL_FT_PATH)/将-I $(FULL_FT_PATH)/有/ FreeType的-I $(FULL_FT_PATH)/有/ freetype的/配置-I $(FULL_FT_PATH)/有/ freetype的/内部-I $(FULL_FT_PATH)/有/ freetype的/内部/服务-I $(FULL_FT_PATH)/ freetype的/有/对FreeType2 / FreeType的-I $(FULL_FT_PATH)/ freetype的/有/对FreeType2 / freetype的/配置
GLU_INCLUDE:= -I $(FULL_GLU_PATH)-I $(FULL_GLU_PATH)/将-I $(FULL_GLU_PATH)/ libtess -I $(FULL_GLU_PATH)/ libutil中-I $(GLES_PATH)

FTGL_FTFONT_SRC:= $(FTGL_PATH)/src/FTFont/FTFont.cpp $(FTGL_PATH)/src/FTFont/FTFontGlue.cpp $(FTGL_PATH)/src/FTFont/FTOutlineFont.cpp $(FTGL_PATH)/ src目录/ FTFont / FTPolygonFont。 CPP $(FTGL_PATH)/src/FTFont/FTTextureFont.cpp
FTGL_FTGLYPH_SRC:= $(FTGL_PATH)/src/FTGlyph/FTGlyph.cpp $(FTGL_PATH)/src/FTGlyph/FTGlyphGlue.cpp $(FTGL_PATH)/src/FTGlyph/FTOutlineGlyph.cpp $(FTGL_PATH)/ src目录/ FTGlyph / FTPolygonGlyph。 CPP $(FTGL_PATH)/src/FTGlyph/FTTextureGlyph.cpp
FTGL_FTLAYOUT_SRC:= $(FTGL_PATH)/src/FTLayout/FTLayout.cpp $(FTGL_PATH)/src/FTLayout/FTLayoutGlue.cpp $(FTGL_PATH)/src/FTLayout/FTSimpleLayout.cpp

FTGL_SRC:= $(FTGL_PATH)/src/FTBuffer.cpp $(FTGL_PATH)/src/FTCharmap.cpp $(FTGL_PATH)/src/FTContour.cpp $(FTGL_PATH)/src/FTFace.cpp $(FTGL_FTFONT_SRC)$(FTGL_PATH )/src/FTGL/ftglesglue.cpp $(FTGL_FTGLYPH_SRC)$(FTGL_PATH)/src/FTGlyphContainer.cpp $(FTGL_FTLAYOUT_SRC)$(FTGL_PATH)/src/FTLibrary.cpp $(FTGL_PATH)/src/FTPoint.cpp $(FTGL_PATH )/src/FTSize.cpp $(FTGL_PATH)/src/FTVectoriser.cpp
GLU_SRC:= $(GLU_PATH)/libtess/dict.c $(GLU_PATH)/libtess/geom.c $(GLU_PATH)/libtess/memalloc.c $(GLU_PATH)/libtess/mesh.c $(GLU_PATH)/ libtess / normal.c $(GLU_PATH)/libtess/priorityq.c $(GLU_PATH)/libtess/render.c $(GLU_PATH)/libtess/sweep.c $(GLU_PATH)/libtess/tess.c $(GLU_PATH)/ libtess / tessmono.c
GLU_SRC2:= $(GLU_PATH)/libutil/error.c $(GLU_PATH)/libutil/glue.c $(GLU_PATH)/libutil/project.c $(GLU_PATH)/libutil/registry.c

#DEBUG模式:取消这一点,并设置机器人:可调试在清单中为真
#DEBUGMODE_FLAGS:= -DSELF_EDIT
#RELEASE模式:评论上面一行,下面的注释去掉,机器人:可调试假
DEBUGMODE_FLAGS:= -DNDEBUG

LOCAL_MODULE:= ftgl
LOCAL_CFLAGS:= -Werror -DFT2_BUILD_LIBRARY = 1 -DTARGET_ANDROID $(FTGL_INCLUDE)$(FREETYPE_INCLUDE)$(GLU_INCLUDE)$(DEBUGMODE_FLAGS)
LOCAL_SRC_FILES:= $(FTGL_SRC)$(GLU_SRC)$(GLU_SRC2)
LOCAL_LDLIBS:= -llog -lGLESv1_CM -lGLESv2 -landroid -lEGL -lOpenSLES
LOCAL_STATIC_LIBRARIES:=对FreeType2静电

包括$(BUILD_STATIC_LIBRARY)

包括$(CLEAR_VARS)

LOCAL_MODULE:= ftgles
LOCAL_CFLAGS:= -Werror -DFT2_BUILD_LIBRARY = 1 -DTARGET_ANDROID $(FTGL_INCLUDE)$(FREETYPE_INCLUDE)$(GLU_INCLUDE)$(DEBUGMODE_FLAGS)
LOCAL_LDLIBS:= -llog -lGLESv1_CM -lGLESv2 -landroid -lEGL -lOpenSLES
LOCAL_SRC_FILES:= ftgleswrapper.cpp
LOCAL_STATIC_LIBRARIES:= ftgl对FreeType2静电

包括$(BUILD_SHARED_LIBRARY)
 

解决方案

我不认为你需要编写所有的包装器。

一起来看看。

我的FreeType Android.Mk文件看起来像这样

  LOCAL_PATH:= $(叫我-DIR)
包括$(CLEAR_VARS)

LOCAL_C_INCLUDES + = \
    $(LOCAL_PATH)/构建\
    $(LOCAL_PATH)/包括

LOCAL_SRC_FILES:= \
    SRC /基/ ftbbox.c \
    SRC /基/ ftbitmap.c \
    SRC /基/ ftglyph.c \
    SRC /基/ ftstroke.c \
    SRC /基/ ftxf86.c \
    SRC /基/ ftbase.c \
    SRC /基/ ftsystem.c \
    SRC /基/ ftinit.c \
    SRC /基/ ftgasp.c \
    SRC /光栅/ raster.c \
    SRC / SFNT / sfnt.c \
    SRC /平/ smooth.c \
    SRC /自动调整/ autofit.c \
    SRC / TrueType字体/ truetype.c \
    SRC / CFF / cff.c \
    SRC / psnames / psnames.c \
    SRC / pshinter / pshinter.c \
    SRC / TYPE1 / type1.c \
    SRC / CID / type1cid.c \
    SRC / PFR / pfr.c \
    SRC / type42 / type42.c \
    SRC / winfonts / winfnt.c \
    SRC / PCF / pcf.c \
    SRC / psaux / psaux.c \
    SRC / BDF / bdf.c \
    SRC / GZIP / ftgzip.c \
    SRC / LZW / ftlzw.c

LOCAL_CFLAGS + = -DFT2_BUILD_LIBRARY
LOCAL_MODULE:=的FreeType
LOCAL_LDLIBS:= -ldl -llog

包括$(BUILD_STATIC_LIBRARY)
 

我ftgles Android.mk文件看起来像这样

  LOCAL_PATH:= $(叫我-DIR)
包括$(CLEAR_VARS)
LOCAL_MODULE:= FTGLES
LOCAL_CFLAGS:= -I $(LOCAL_PATH)/../的FreeType /包括

LOCAL_C_INCLUDES:= $(LOCAL_PATH)/ src目录\
$(LOCAL_PATH)/src/iGLU-1.0.0/include

LOCAL_SRC_FILES:= \
SRC / FTBuffer.cpp \
SRC / FTCharmap.cpp \
SRC / FTContour.cpp \
SRC / FTFace.cpp \
SRC / FTFont / FTBitmapFont.cpp \
SRC / FTFont / FTBufferFont.cpp \
SRC / FTFont / FTFont.cpp \
SRC / FTFont / FTFontGlue.cpp \
SRC / FTFont / FTOutlineFont.cpp \
SRC / FTFont / FTPixmapFont.cpp \
SRC / FTFont / FTPolygonFont.cpp \
SRC / FTFont / FTTextureFont.cpp \
SRC / FTGL / ftglesGlue.cpp \
SRC / FTGlyph / FTBitmapGlyph.cpp \
SRC / FTGlyph / FTBufferGlyph.cpp \
SRC / FTGlyph / FTGlyph.cpp \
SRC / FTGlyph / FTGlyphGlue.cpp \
SRC / FTGlyph / FTOutlineGlyph.cpp \
SRC / FTGlyph / FTPixmapGlyph.cpp \
SRC / FTGlyph / FTPolygonGlyph.cpp \
SRC / FTGlyph / FTTextureGlyph.cpp \
SRC / FTGlyphContainer.cpp \
SRC / FTLayout / FTLayout.cpp \
SRC / FTLayout / FTLayoutGlue.cpp \
SRC / FTLayout / FTSimpleLayout.cpp \
SRC / FTLibrary.cpp \
SRC / FTPoint.cpp \
SRC / FTSize.cpp \
SRC / FTVectoriser.cpp \
SRC / IGLU-1.0.0 / libtess / dict.c \
SRC / IGLU-1.0.0 / libtess / geom.c \
SRC / IGLU-1.0.0 / libtess / memalloc.c \
SRC / IGLU-1.0.0 / libtess / mesh.c \
SRC / IGLU-1.0.0 / libtess / normal.c \
SRC / IGLU-1.0.0 / libtess / priorityq.c \
SRC / IGLU-1.0.0 / libtess / render.c \
SRC / IGLU-1.0.0 / libtess / sweep.c \
SRC / IGLU-1.0.0 / libtess / tess.c \
SRC / IGLU-1.0.0 / libtess / tessmono.c \
SRC / IGLU-1.0.0 / libutil中/ error.c \
SRC / IGLU-1.0.0 / libutil中/ glue.c \
SRC / IGLU-1.0.0 / libutil中/ project.c \
SRC / IGLU-1.0.0 / libutil中/ registry.c

LOCAL_CFLAGS + = -DGL_GLEXT_PROTOTYPES -DFTGL_LIBRARY_STATIC
LOCAL_LDLIBS:= -ldl -lGLESv1_CM -lGLESv2 -llog

LOCAL_STATIC_LIBRARIES:=的FreeType

包括$(BUILD_SHARED_LIBRARY)
 

您可能会得到一些找不到gl.h错误。解决这些问题指向正确的地方。

现在我的主要Android.mk文件

  LOCAL_PATH:= $(叫我-DIR)
包括$(CLEAR_VARS)
LOCAL_MODULE:=主
SDL_PATH:= ../SDL

LOCAL_C_INCLUDES:= \
$(LOCAL_PATH)/ $(SDL_PATH)/包括\
$(LOCAL_PATH)/../的FreeType /包括\
$(LOCAL_PATH)/../ ftgles / src目录\
../../../src/TestApp

LOCAL_CFLAGS:= \
-DFTGL_LIBRARY_STATIC

LOCAL_SRC_FILES:= $(SDL_PATH)/src/main/android/SDL_android_main.cpp \
../../../src/TestApp/app.cpp

LOCAL_SHARED_LIBRARIES:= SDL2 FTGLES

LOCAL_LDLIBS:= -lGLESv1_CM -llog

包括$(BUILD_SHARED_LIBRARY)
 

一切编译和伟大工程。我可以调用的FreeType和ftgles所有的C / C ++函数。我不能调整字体但是。 我有一个线程约在这里。

<一个href="http://stackoverflow.com/questions/10875343/freetype-ft-request-size-crashes-on-android">Freetype FT_Request_Size()崩溃在Android

DigitalKnob

I am tasked with writing an application that uses OpenGL ES 1.0 (or 1.1 if necessary) and I need to be able to render text on the screen. Bitmap text and textured fonts aren't really a choice here. I know for iOS there's FTGLES, which states that android support is in the "near future", but given the deadlines on my project, I need an answer (whether it works/could work/doesn't work/etc) much sooner than "the near future" unfortunately.

I've scoured through posts here and other places and haven't found much of anything that helps. I've tried using the JNI and NDK in Eclipse, but also nothing useful has come from that. I'd greatly appreciate if someone can point me in the right direction. I've also tried jumpcore, but the application isn't native code, it's all written in Java. I'm a bit surprised someone hasn't already resolved this (in a fashion that I could have found by now). Thanks to any and all that help me find a solution for this.

EDIT:

In the JNI folder, I placed the source (each in its own subfolder) for freetype and ftgles. I also had to compile a different version of sqlite to enable RTREE. I was getting caught up initially because I was compiling the wrong files. Hopefully this proves to be helpful.

Here's the Make file for the FTGLES Portion of the native code:

include $(CLEAR_VARS)

include $(JNI_DIR)/freetype/Android.mk

LOCAL_PATH := $(JNI_DIR)

include $(CLEAR_VARS)

GLES_PATH := $(JNI_DIR)/include/
FTGL_PATH := ftgles
FREETYPE_PATH := freetype
GLU_PATH := $(FTGL_PATH)/src/iGLU-1.0.0

FULL_FTGL_PATH := $(LOCAL_PATH)/$(FTGL_PATH)
FULL_FT_PATH := $(LOCAL_PATH)/$(FREETYPE_PATH)
FULL_GLU_PATH := $(LOCAL_PATH)/$(GLU_PATH)

FTGL_INCLUDE := -I$(FULL_FTGL_PATH) -I$(FULL_FTGL_PATH)/src -I$(FULL_FTGL_PATH)/src/FTGL -I$(FULL_FTGL_PATH)/src/FTFont -I$(FULL_FTGL_PATH)/src/FTGlyph -I$(FULL_FTGL_PATH)/src/FTLayout
FREETYPE_INCLUDE := -I$(FULL_FT_PATH) -I$(FULL_FT_PATH)/include -I$(FULL_FT_PATH)/include/freetype -I$(FULL_FT_PATH)/include/freetype/config -I$(FULL_FT_PATH)/include/freetype/internal -I$(FULL_FT_PATH)/include/freetype/internal/services -I$(FULL_FT_PATH)/freetype/include/freetype2/freetype -I$(FULL_FT_PATH)/freetype/include/freetype2/freetype/config
GLU_INCLUDE := -I$(FULL_GLU_PATH) -I$(FULL_GLU_PATH)/include -I$(FULL_GLU_PATH)/libtess -I$(FULL_GLU_PATH)/libutil -I$(GLES_PATH)

FTGL_FTFONT_SRC := $(FTGL_PATH)/src/FTFont/FTFont.cpp $(FTGL_PATH)/src/FTFont/FTFontGlue.cpp $(FTGL_PATH)/src/FTFont/FTOutlineFont.cpp $(FTGL_PATH)/src/FTFont/FTPolygonFont.cpp $(FTGL_PATH)/src/FTFont/FTTextureFont.cpp
FTGL_FTGLYPH_SRC := $(FTGL_PATH)/src/FTGlyph/FTGlyph.cpp $(FTGL_PATH)/src/FTGlyph/FTGlyphGlue.cpp $(FTGL_PATH)/src/FTGlyph/FTOutlineGlyph.cpp $(FTGL_PATH)/src/FTGlyph/FTPolygonGlyph.cpp $(FTGL_PATH)/src/FTGlyph/FTTextureGlyph.cpp
FTGL_FTLAYOUT_SRC := $(FTGL_PATH)/src/FTLayout/FTLayout.cpp $(FTGL_PATH)/src/FTLayout/FTLayoutGlue.cpp $(FTGL_PATH)/src/FTLayout/FTSimpleLayout.cpp

FTGL_SRC := $(FTGL_PATH)/src/FTBuffer.cpp $(FTGL_PATH)/src/FTCharmap.cpp $(FTGL_PATH)/src/FTContour.cpp $(FTGL_PATH)/src/FTFace.cpp $(FTGL_FTFONT_SRC) $(FTGL_PATH)/src/FTGL/ftglesglue.cpp $(FTGL_FTGLYPH_SRC) $(FTGL_PATH)/src/FTGlyphContainer.cpp $(FTGL_FTLAYOUT_SRC) $(FTGL_PATH)/src/FTLibrary.cpp $(FTGL_PATH)/src/FTPoint.cpp $(FTGL_PATH)/src/FTSize.cpp $(FTGL_PATH)/src/FTVectoriser.cpp
GLU_SRC := $(GLU_PATH)/libtess/dict.c $(GLU_PATH)/libtess/geom.c $(GLU_PATH)/libtess/memalloc.c $(GLU_PATH)/libtess/mesh.c $(GLU_PATH)/libtess/normal.c $(GLU_PATH)/libtess/priorityq.c $(GLU_PATH)/libtess/render.c $(GLU_PATH)/libtess/sweep.c $(GLU_PATH)/libtess/tess.c $(GLU_PATH)/libtess/tessmono.c
GLU_SRC2 := $(GLU_PATH)/libutil/error.c $(GLU_PATH)/libutil/glue.c $(GLU_PATH)/libutil/project.c $(GLU_PATH)/libutil/registry.c

#DEBUG MODE: Uncomment this and set android:debuggable in the manifest to true
# DEBUGMODE_FLAGS := -DSELF_EDIT
#RELEASE MODE: Comment the above line, uncomment below, android:debuggable false
DEBUGMODE_FLAGS := -DNDEBUG

LOCAL_MODULE    := ftgl
LOCAL_CFLAGS    := -Werror -DFT2_BUILD_LIBRARY=1 -DTARGET_ANDROID $(FTGL_INCLUDE) $(FREETYPE_INCLUDE) $(GLU_INCLUDE) $(DEBUGMODE_FLAGS)
LOCAL_SRC_FILES := $(FTGL_SRC) $(GLU_SRC) $(GLU_SRC2)   
LOCAL_LDLIBS    := -llog -lGLESv1_CM -lGLESv2 -landroid -lEGL -lOpenSLES 
LOCAL_STATIC_LIBRARIES := freetype2-static 

include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE    := ftgles
LOCAL_CFLAGS    := -Werror -DFT2_BUILD_LIBRARY=1 -DTARGET_ANDROID $(FTGL_INCLUDE) $(FREETYPE_INCLUDE) $(GLU_INCLUDE) $(DEBUGMODE_FLAGS)
LOCAL_LDLIBS    := -llog -lGLESv1_CM -lGLESv2 -landroid -lEGL -lOpenSLES
LOCAL_SRC_FILES := ftgleswrapper.cpp
LOCAL_STATIC_LIBRARIES := ftgl freetype2-static

include $(BUILD_SHARED_LIBRARY)

解决方案

I don't think you need to write all of those wrappers.

Take a look.

My freetype Android.Mk file looks like this

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_C_INCLUDES += \
    $(LOCAL_PATH)/builds \
    $(LOCAL_PATH)/include

LOCAL_SRC_FILES:= \
    src/base/ftbbox.c \
    src/base/ftbitmap.c \
    src/base/ftglyph.c \
    src/base/ftstroke.c \
    src/base/ftxf86.c \
    src/base/ftbase.c \
    src/base/ftsystem.c \
    src/base/ftinit.c \
    src/base/ftgasp.c \
    src/raster/raster.c \
    src/sfnt/sfnt.c \
    src/smooth/smooth.c \
    src/autofit/autofit.c \
    src/truetype/truetype.c \
    src/cff/cff.c \
    src/psnames/psnames.c \
    src/pshinter/pshinter.c \
    src/type1/type1.c \
    src/cid/type1cid.c \
    src/pfr/pfr.c \
    src/type42/type42.c \
    src/winfonts/winfnt.c \
    src/pcf/pcf.c \
    src/psaux/psaux.c \
    src/bdf/bdf.c \
    src/gzip/ftgzip.c \
    src/lzw/ftlzw.c

LOCAL_CFLAGS += -DFT2_BUILD_LIBRARY
LOCAL_MODULE := freetype
LOCAL_LDLIBS := -ldl -llog

include $(BUILD_STATIC_LIBRARY)

My ftgles Android.mk file looks like this

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := FTGLES
LOCAL_CFLAGS := -I$(LOCAL_PATH)/../freetype/include

LOCAL_C_INCLUDES := $(LOCAL_PATH)/src \
$(LOCAL_PATH)/src/iGLU-1.0.0/include

LOCAL_SRC_FILES := \
src/FTBuffer.cpp \
src/FTCharmap.cpp \
src/FTContour.cpp \
src/FTFace.cpp \
src/FTFont/FTBitmapFont.cpp \
src/FTFont/FTBufferFont.cpp \
src/FTFont/FTFont.cpp \
src/FTFont/FTFontGlue.cpp \
src/FTFont/FTOutlineFont.cpp \
src/FTFont/FTPixmapFont.cpp \
src/FTFont/FTPolygonFont.cpp \
src/FTFont/FTTextureFont.cpp \
src/FTGL/ftglesGlue.cpp \
src/FTGlyph/FTBitmapGlyph.cpp \
src/FTGlyph/FTBufferGlyph.cpp \
src/FTGlyph/FTGlyph.cpp \
src/FTGlyph/FTGlyphGlue.cpp \
src/FTGlyph/FTOutlineGlyph.cpp \
src/FTGlyph/FTPixmapGlyph.cpp \
src/FTGlyph/FTPolygonGlyph.cpp \
src/FTGlyph/FTTextureGlyph.cpp \
src/FTGlyphContainer.cpp \
src/FTLayout/FTLayout.cpp \
src/FTLayout/FTLayoutGlue.cpp \
src/FTLayout/FTSimpleLayout.cpp \
src/FTLibrary.cpp \
src/FTPoint.cpp \
src/FTSize.cpp \
src/FTVectoriser.cpp \
src/iGLU-1.0.0/libtess/dict.c \
src/iGLU-1.0.0/libtess/geom.c \
src/iGLU-1.0.0/libtess/memalloc.c \
src/iGLU-1.0.0/libtess/mesh.c \
src/iGLU-1.0.0/libtess/normal.c \
src/iGLU-1.0.0/libtess/priorityq.c \
src/iGLU-1.0.0/libtess/render.c \
src/iGLU-1.0.0/libtess/sweep.c \
src/iGLU-1.0.0/libtess/tess.c \
src/iGLU-1.0.0/libtess/tessmono.c \
src/iGLU-1.0.0/libutil/error.c \
src/iGLU-1.0.0/libutil/glue.c \
src/iGLU-1.0.0/libutil/project.c \
src/iGLU-1.0.0/libutil/registry.c

LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DFTGL_LIBRARY_STATIC
LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -llog

LOCAL_STATIC_LIBRARIES := freetype

include $(BUILD_SHARED_LIBRARY)

You may get some can't find gl.h errors. Fix them to point to the right place.

Now my main Android.mk file

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := main
SDL_PATH := ../SDL

LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/$(SDL_PATH)/include \
$(LOCAL_PATH)/../freetype/include \
$(LOCAL_PATH)/../ftgles/src \
../../../src/TestApp

LOCAL_CFLAGS := \
-DFTGL_LIBRARY_STATIC

LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.cpp \
../../../src/TestApp/app.cpp

LOCAL_SHARED_LIBRARIES := SDL2 FTGLES

LOCAL_LDLIBS := -lGLESv1_CM -llog

include $(BUILD_SHARED_LIBRARY)

Everything compiles and works great. I can call all c/c++ functions in freetype and ftgles. I can not resize fonts however. I have a thread about it here.

Freetype FT_Request_Size() crashes on Android

DigitalKnob

这篇关于如何加载FTGLES(或任何其他文本渲染)为Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆