Rozwijam międzyplatformową grę OpenGL na komputer i Androida.
Dla platformy komputerowej używam LWJGL:
import static org.lwjgl.opengl.GL20.*;
Do platformy Android używam:
import static android.opengl.GLES20.*;
Nie chcę tworzyć interfejsu GL i owijać ichfunkcje i nie chcę pisać tych samych klas dwukrotnie z różnymi importami. Wiem, że to jest możliwe, ponieważ Java jest kompilowana w natywny, gdy jest uruchamiana.
Odpowiedzi:
0 dla odpowiedzi № 1Widzę dwa rozwiązania Twojego problemu:
Pierwszym z nich jest pakowanie (czego nie chcesz) i wstrzyknięcie właściwej klasy lub instancji w czasie wykonywania.
Po drugie, używasz wstępnego przetwarzania makr lubniektóre skrypty w czasie kompilacji, aby określić import, którego chcesz użyć w zależności od platformy docelowej. Może sprawić, że kompilacja będzie bardziej skomplikowana i prawdopodobnie będziesz musiał użyć jej jawnie
org.lwjgl.opengl.GL20.*
w fazie rozwoju.
Tak więc najprościej byłoby zrobić utwórz skrypt do zastąpieniaorg.lwjgl.opengl.GL20.*
przezandroid.opengl.GLES20.*
kiedy platformą docelową jest Android.