அனைவருக்கும் வணக்கம். ஆண்ட்ராய்டில் கேமை இயக்க sdl2 நூலகத்தைப் பயன்படுத்தி ஒரு திட்டத்தை எவ்வாறு தயாரிப்பது என்பதை இன்று பார்ப்போம்.
முதலில் நீங்கள் ஆண்ட்ராய்டு ஸ்டுடியோவைப் பதிவிறக்கம் செய்து, அதை நிறுவி, இந்த வளர்ச்சி சூழலில் தேவையான அனைத்தையும் செய்ய வேண்டும். எடுத்துக்காட்டாக, என்னிடம் இப்போது Kde Neon உள்ளது, இந்த கணினியில் ஒரு கோப்பு /etc/environment உள்ளது, அதே கோப்பு உபுண்டுவில் உள்ளது. பின்வரும் மாறிகளை அங்கு உள்ளிட வேண்டும்.
ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk
நீங்கள் அதிகாரப்பூர்வ இணையதளத்தில் இருந்து NDK ஐ பதிவிறக்கம் செய்து, அதை உங்கள் முகப்பு கோப்பகத்தில் திறந்து NDK என மறுபெயரிட வேண்டும். அடுத்து நீங்கள் SDL2 நூலகத்தை இணையதளத்தில் இருந்து பதிவிறக்கம் செய்ய வேண்டும்
ஆண்ட்ராய்டில் உள்ள கோப்புகளை சொத்துக்களிலிருந்து படிக்க, நீங்கள் SDL_RWops செயல்பாடுகளைப் பயன்படுத்த வேண்டும். எழுத்துருவுடன் வேலை செய்வதற்கான குறியீட்டைப் பயன்படுத்துவதற்கான எடுத்துக்காட்டு இங்கே. இந்த வழக்கில், எங்களால் FT_New_Face ஐப் பயன்படுத்த முடியாது, ஆனால் ஏற்கனவே படித்த தரவைப் பயன்படுத்த FT_New_Memory_Face ஐப் பயன்படுத்துவோம்.
#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
SDL2 தலைப்புகளை இணைக்க ஒரு தலைப்பு கோப்பையும் உருவாக்கினேன். Android இல் தொகுக்க NO_SDL_GLEXT தேவை.
#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
எனவே திட்டம் தயாராக உள்ளது, ஷேடர்கள் Opengl Es 3.0 க்கு தயாராக உள்ளன. இப்போது நாம் ஒரு ஆண்ட்ராய்டு திட்டத்தை உருவாக்க வேண்டும். இதைச் செய்ய, SDL2 காப்பகத்தைத் திறக்கவும். பில்ட்-ஸ்கிரிப்ட்களுக்குச் செல்லவும். நாங்கள் அதை இப்படி செய்கிறோம்.
./androidbuild.sh com.xverizex.test main.cpp
பின்வரும் செய்தி தோன்றும்.
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
com.xverizex.test க்குச் செல்லவும். com.xverizex.test/app/jni/src க்குச் செல்லவும். நாங்கள் எங்கள் விளையாட்டு திட்டத்தை நகலெடுக்கிறோம். நாங்கள் Android.mk கோப்பை மாற்றுகிறோம், என் விஷயத்தில் இது போல் தெரிகிறது.
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)
நீங்கள் ஏற்கனவே கவனித்திருக்கலாம், நான் Freetype2 நூலகத்தையும் சேர்க்கிறேன். ஆண்ட்ராய்டுக்கான கிதுப்பில் ஆயத்தமான ஒன்றைக் கண்டுபிடித்தேன், ஆனால் அது வேலை செய்யவில்லை, நான் ஏதாவது மாற்ற வேண்டும். நாங்கள் ஒரு கோப்பக பயன்பாட்டை/src/main/assets உருவாக்குகிறோம். எங்கள் வளங்களை அதில் வைக்கிறோம் (எழுத்துருக்கள், உருவங்கள், 3D மாதிரிகள்).
இப்போது Android க்காக Freetype2 ஐ உள்ளமைப்போம். எனது கிட்ஹப்பில் இருந்து பதிவிறக்கவும்
ஆதாரம்: www.habr.com