Na-akwado ọrụ SDL2 iji rụọ ọrụ na gam akporo

Ndewo, unu niile. Taa, anyị ga-eleba anya ka esi akwadebe ọrụ site na iji ọba akwụkwọ sdl2 iji mee egwuregwu na gam akporo.

Mbụ ịkwesịrị ibudata gam akporo Studio, wụnye ya na ihe niile achọrọ na gburugburu mmepe a. Dịka ọmụmaatụ, enwere m Kde Neon ugbu a, na sistemụ a enwere faịlụ /etc/environment, otu faịlụ dị na ubuntu. Ekwesịrị itinye mgbanwe ndị a n'ebe ahụ.

ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk

Ịkwesịrị ibudata NDK site na webụsaịtị gọọmentị, bupụ ya na ndekọ ụlọ gị wee nyegharịa ya aha NDK. Ọzọ ị ga-ebudata ọba akwụkwọ SDL2 na webụsaịtị libsdl.org. Iji sdl2 maka android, ọ dị mkpa ka ị ghara ikpokọta ya maka kọmputa, n'ihi na mgbe ahụ ọ gaghị achịkọta maka android. Iji chịkọta ọrụ ahụ, ịkwesịrị ịmepụta ọrụ na studio android, onye ọ bụla, ịnakwere ikike, ma ọ bụghị ya, SDL2 ga-arịọ maka ikike mgbe ị na-ewu ụlọ.

Iji gụọ faịlụ na android site na akụ, ịkwesịrị iji ọrụ SDL_RWops. Nke a bụ ọmụmaatụ ojiji na koodu maka iji font arụ ọrụ. N'okwu a, anyị enweghị ike iji FT_New_Face, mana anyị ga-eji FT_New_Memory_Face iji jiri data agụburu.

#ifdef __ANDROID__
        snprintf ( path, 254, "fonts/%s", file );
        SDL_RWops *rw = SDL_RWFromFile(path, "r" );
        char *memory = ( char * ) calloc ( rw->hidden.androidio.size, 1 );
        SDL_RWread(rw, memory, 1, rw->hidden.androidio.size );

        FT_New_Memory_Face(*this->ft_library, ( const FT_Byte  * )memory, rw->hidden.androidio.size, 0, &this;->face );
        SDL_RWclose(rw);
        free ( memory );
#else
        snprintf ( path, 254, "%s/fonts/%s", DEFAULT_ASSETS, file );
        if ( access ( path, F_OK ) ) {
                fprintf ( stderr, "not found font: %sn", path );
                exit ( EXIT_FAILURE );
        }
        struct stat st;
        stat ( path, &st; );
        FILE *rw = fopen ( path, "r" );
        char *memory = ( char * ) calloc ( st.st_size, 1 );
        fread ( memory, 1, st.st_size, rw );

        FT_New_Memory_Face ( *this->ft_library, ( const FT_Byte * ) memory, st.st_size, 0, &this;->face );
        fclose ( rw );
        free ( memory );
#endif

Emekwara m faịlụ nkụnye eji isi mee jikọọ isi SDL2. NO_SDL_GLEXT dị mkpa maka nchịkọta iji gaa nke ọma na gam akporo.

#ifdef __ANDROID__
#include "SDL.h"
#include "SDL_video.h"
#include "SDL_events.h"
#define NO_SDL_GLEXT 
#include "SDL_opengl.h"
#include "SDL_opengles2.h"
#else
#include <SDL2/SDL.h>
#include <SDL2/SDL_video.h>
#include <SDL2/SDL_opengl.h>
#include <SDL2/SDL_opengles2.h>
#endif

Ya mere, oru ngo a dị njikere, ihe ndò dị njikere maka Opengl Es 3.0. Ugbu a, anyị kwesịrị ịmepụta android-project. Iji mee nke a, wepụ ihe nchekwa SDL2. Gaa na-ewu-scripts. Anyị na-emekwa ya otu a.

./androidbuild.sh com.xverizex.test main.cpp

Ozi na-esonụ ga-apụta.

To build and install to a device for testing, run the following:
cd /home/cf/programs/SDL2-2.0.10/build/com.xverizex.test
./gradlew installDebug

Gaa na com.xverizex.test. Gaa na com.xverizex.test/app/jni/src. Anyị na-eṅomi ọrụ egwuregwu anyị. Ma anyị na-agbanwe faịlụ Android.mk, n'ọnọdụ m ọ dị ka nke a.

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := main

SDL_PATH := ../SDL
FREETYPE_PATH := ../Freetype2

LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include $(LOCAL_PATH)/$(FREETYPE_PATH)/include

# Add your application source files here...
LOCAL_SRC_FILES := ./engine/lang.cpp ./engine/actor.cpp ./engine/sprite.cpp ./engine/shaders.cpp ./engine/box.cpp ./engine/menubox.cpp ./engine/load_manager.cpp ./engine/main.cpp ./engine/font.cpp ./engine/model.cpp ./engine/button.cpp ./theme.cpp ./level_manager.cpp ./menu/menu.cpp

LOCAL_SHARED_LIBRARIES := SDL2 Freetype2

LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog 

include $(BUILD_SHARED_LIBRARY)

Dịka ị chọpụtala, agụnyekwara m ọbá akwụkwọ Freetype2. Achọtara m ihe dị njikere na github maka android, mana ọ naghị arụ ọrụ, achọrọ m ịgbanwe ihe. Anyị na-emepụtakwa ngwa ndekọ aha/src/isi/ihe onwunwe. Anyị na-etinye ihe onwunwe anyị na ya (font, sprites, 3D model).

Ugbu a, ka anyị hazie Freetype2 maka gam akporo. Budata na github m njikọ, ma detuo akwụkwọ ndekọ Freetype2 na ngwa/jni/ ndekọ. Ihe niile dị njikere. Ugbu a gbanye iwu ./gradlew installDebug na com.xverizex.test. Iji nwee ike itinye egwuregwu a na android, a ga-agbanyerịrị nbipu na android. Iji mee nke a, ịkwesịrị ịga na ntọala, gaa na "System", gaa na "About tablet" wee pịa nhọrọ "Mepụta nọmba" ihe dị ka ugboro isii. Mgbe ahụ laghachi azụ na nhọrọ maka mmepe ga-apụta. Banye ma gbanye ya, gbanyekwa nhọrọ "USB Debugging" nhọrọ. Ugbu a ịkwesịrị ịnweta igodo maka mbadamba. Iji mee nke a, wụnye mmemme adb. Anyị na-ewepụta adb shei na console, igodo na-egosi na mbadamba ihe a ga-anabatarịrị. Nke ahụ bụ ya, ugbu a enwere ike ibudata egwuregwu na mbadamba ihe gị.

isi: www.habr.com

Tinye a comment