Mirrel 4 vuotta sitten
commit
0b36bbf580
100 muutettua tiedostoa jossa 2295 lisäystä ja 0 poistoa
  1. BIN
      00001-test/ZenTest001
  2. BIN
      00001-test/ZenTest001.dbg
  3. 70 0
      00001-test/ZenTest001.lpi
  4. 344 0
      00001-test/ZenTest001.lpr
  5. 437 0
      00001-test/ZenTest001.lps
  6. 70 0
      00001-test/backup/ZenTest001.lpi
  7. 344 0
      00001-test/backup/ZenTest001.lpr
  8. 448 0
      00001-test/backup/ZenTest001.lps
  9. BIN
      00001-test/data/font-page0.png
  10. BIN
      00001-test/data/font.zfi
  11. 535 0
      00001-test/jni.pas
  12. BIN
      00001-test/lib/arm-android/jni.o
  13. BIN
      00001-test/lib/arm-android/jni.ppu
  14. 5 0
      00001-test/lib/arm-android/test.compiled
  15. BIN
      00001-test/lib/arm-android/test.o
  16. 6 0
      00001-test/lib/arm-linux/ZenTest001.compiled
  17. BIN
      00001-test/lib/arm-linux/jni.o
  18. BIN
      00001-test/lib/arm-linux/jni.ppu
  19. 6 0
      00001-test/lib/arm-linux/test.compiled
  20. BIN
      00001-test/lib/arm-linux/test.o
  21. 5 0
      00001-test/lib/x86_64-linux/ZenTest001.compiled
  22. BIN
      00001-test/lib/x86_64-linux/ZenTest001.o
  23. BIN
      00001-test/lib/x86_64-linux/dglOpenGL.o
  24. BIN
      00001-test/lib/x86_64-linux/dglOpenGL.ppu
  25. BIN
      00001-test/lib/x86_64-linux/zgl_application.o
  26. BIN
      00001-test/lib/x86_64-linux/zgl_application.ppu
  27. BIN
      00001-test/lib/x86_64-linux/zgl_camera_2d.o
  28. BIN
      00001-test/lib/x86_64-linux/zgl_camera_2d.ppu
  29. BIN
      00001-test/lib/x86_64-linux/zgl_file.o
  30. BIN
      00001-test/lib/x86_64-linux/zgl_file.ppu
  31. BIN
      00001-test/lib/x86_64-linux/zgl_font.o
  32. BIN
      00001-test/lib/x86_64-linux/zgl_font.ppu
  33. BIN
      00001-test/lib/x86_64-linux/zgl_fx.o
  34. BIN
      00001-test/lib/x86_64-linux/zgl_fx.ppu
  35. BIN
      00001-test/lib/x86_64-linux/zgl_joystick.o
  36. BIN
      00001-test/lib/x86_64-linux/zgl_joystick.ppu
  37. BIN
      00001-test/lib/x86_64-linux/zgl_keyboard.o
  38. BIN
      00001-test/lib/x86_64-linux/zgl_keyboard.ppu
  39. BIN
      00001-test/lib/x86_64-linux/zgl_lib_ogg.o
  40. BIN
      00001-test/lib/x86_64-linux/zgl_lib_ogg.ppu
  41. BIN
      00001-test/lib/x86_64-linux/zgl_lib_theora.o
  42. BIN
      00001-test/lib/x86_64-linux/zgl_lib_theora.ppu
  43. BIN
      00001-test/lib/x86_64-linux/zgl_lib_zip.o
  44. BIN
      00001-test/lib/x86_64-linux/zgl_lib_zip.ppu
  45. BIN
      00001-test/lib/x86_64-linux/zgl_log.o
  46. BIN
      00001-test/lib/x86_64-linux/zgl_log.ppu
  47. BIN
      00001-test/lib/x86_64-linux/zgl_main.o
  48. BIN
      00001-test/lib/x86_64-linux/zgl_main.ppu
  49. BIN
      00001-test/lib/x86_64-linux/zgl_math_2d.o
  50. BIN
      00001-test/lib/x86_64-linux/zgl_math_2d.ppu
  51. BIN
      00001-test/lib/x86_64-linux/zgl_memory.o
  52. BIN
      00001-test/lib/x86_64-linux/zgl_memory.ppu
  53. BIN
      00001-test/lib/x86_64-linux/zgl_mouse.o
  54. BIN
      00001-test/lib/x86_64-linux/zgl_mouse.ppu
  55. BIN
      00001-test/lib/x86_64-linux/zgl_opengl.o
  56. BIN
      00001-test/lib/x86_64-linux/zgl_opengl.ppu
  57. BIN
      00001-test/lib/x86_64-linux/zgl_opengl_all.o
  58. BIN
      00001-test/lib/x86_64-linux/zgl_opengl_all.ppu
  59. BIN
      00001-test/lib/x86_64-linux/zgl_particles_2d.o
  60. BIN
      00001-test/lib/x86_64-linux/zgl_particles_2d.ppu
  61. BIN
      00001-test/lib/x86_64-linux/zgl_primitives_2d.o
  62. BIN
      00001-test/lib/x86_64-linux/zgl_primitives_2d.ppu
  63. BIN
      00001-test/lib/x86_64-linux/zgl_render.o
  64. BIN
      00001-test/lib/x86_64-linux/zgl_render.ppu
  65. BIN
      00001-test/lib/x86_64-linux/zgl_render_2d.o
  66. BIN
      00001-test/lib/x86_64-linux/zgl_render_2d.ppu
  67. BIN
      00001-test/lib/x86_64-linux/zgl_render_target.o
  68. BIN
      00001-test/lib/x86_64-linux/zgl_render_target.ppu
  69. BIN
      00001-test/lib/x86_64-linux/zgl_resources.o
  70. BIN
      00001-test/lib/x86_64-linux/zgl_resources.ppu
  71. BIN
      00001-test/lib/x86_64-linux/zgl_screen.o
  72. BIN
      00001-test/lib/x86_64-linux/zgl_screen.ppu
  73. BIN
      00001-test/lib/x86_64-linux/zgl_sengine_2d.o
  74. BIN
      00001-test/lib/x86_64-linux/zgl_sengine_2d.ppu
  75. BIN
      00001-test/lib/x86_64-linux/zgl_sound.o
  76. BIN
      00001-test/lib/x86_64-linux/zgl_sound.ppu
  77. BIN
      00001-test/lib/x86_64-linux/zgl_sound_openal.o
  78. BIN
      00001-test/lib/x86_64-linux/zgl_sound_openal.ppu
  79. BIN
      00001-test/lib/x86_64-linux/zgl_sprite_2d.o
  80. BIN
      00001-test/lib/x86_64-linux/zgl_sprite_2d.ppu
  81. BIN
      00001-test/lib/x86_64-linux/zgl_text.o
  82. BIN
      00001-test/lib/x86_64-linux/zgl_text.ppu
  83. BIN
      00001-test/lib/x86_64-linux/zgl_textures.o
  84. BIN
      00001-test/lib/x86_64-linux/zgl_textures.ppu
  85. BIN
      00001-test/lib/x86_64-linux/zgl_textures_png.o
  86. BIN
      00001-test/lib/x86_64-linux/zgl_textures_png.ppu
  87. BIN
      00001-test/lib/x86_64-linux/zgl_threads.o
  88. BIN
      00001-test/lib/x86_64-linux/zgl_threads.ppu
  89. BIN
      00001-test/lib/x86_64-linux/zgl_timers.o
  90. BIN
      00001-test/lib/x86_64-linux/zgl_timers.ppu
  91. BIN
      00001-test/lib/x86_64-linux/zgl_types.o
  92. BIN
      00001-test/lib/x86_64-linux/zgl_types.ppu
  93. BIN
      00001-test/lib/x86_64-linux/zgl_utils.o
  94. BIN
      00001-test/lib/x86_64-linux/zgl_utils.ppu
  95. BIN
      00001-test/lib/x86_64-linux/zgl_video.o
  96. BIN
      00001-test/lib/x86_64-linux/zgl_video.ppu
  97. BIN
      00001-test/lib/x86_64-linux/zgl_window.o
  98. BIN
      00001-test/lib/x86_64-linux/zgl_window.ppu
  99. BIN
      00001-test/libtest.so
  100. 25 0
      00001-test/log.txt

BIN
00001-test/ZenTest001


BIN
00001-test/ZenTest001.dbg


+ 70 - 0
00001-test/ZenTest001.lpi

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="11"/>
+    <General>
+      <Flags>
+        <MainUnitHasCreateFormStatements Value="False"/>
+        <MainUnitHasTitleStatement Value="False"/>
+        <MainUnitHasScaledStatement Value="False"/>
+      </Flags>
+      <SessionStorage Value="InProjectDir"/>
+      <MainUnit Value="0"/>
+      <Title Value="ZenTest001"/>
+      <UseAppBundle Value="False"/>
+      <ResourceType Value="res"/>
+    </General>
+    <BuildModes Count="1">
+      <Item1 Name="Default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+      <UseFileFilters Value="True"/>
+    </PublishOptions>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes Count="0"/>
+    </RunParams>
+    <Units Count="1">
+      <Unit0>
+        <Filename Value="ZenTest001.lpr"/>
+        <IsPartOfProject Value="True"/>
+      </Unit0>
+    </Units>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="11"/>
+    <Target>
+      <Filename Value="ZenTest001"/>
+    </Target>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir);../../Zengl_SRC/headers"/>
+      <OtherUnitFiles Value="../../Zengl_SRC/src;../../Zengl_SRC/lib/zlib/x86_64-linux;../../Zengl_SRC/lib/zip/x86_64-linux;../../Zengl_SRC/lib/theora/x86_64-linux;../../Zengl_SRC/lib/ogg/x86_64-linux;../../Zengl_SRC/lib/jpeg/x86_64-linux;../../Lib"/>
+      <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
+    </SearchPaths>
+    <CodeGeneration>
+      <SmartLinkUnit Value="True"/>
+      <SmallerCode Value="True"/>
+    </CodeGeneration>
+    <Linking>
+      <Debugging>
+        <StripSymbols Value="True"/>
+        <UseExternalDbgSyms Value="True"/>
+      </Debugging>
+      <LinkSmart Value="True"/>
+    </Linking>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 344 - 0
00001-test/ZenTest001.lpr

@@ -0,0 +1,344 @@
+program ZenTest001;
+
+{$I zglCustomConfig.cfg}
+
+{$IFDEF WINDOWS}
+  {$R *.res}
+{$ENDIF}
+
+uses
+  zgl_window, zgl_screen, zgl_application, zgl_main,
+  gl,
+//  dglOpenGL,                                     // добавил чтоб проверить работоспособность
+  // это вообще недоработка, если мы используем фонт и через какие-то текстуры, то файлы для работы с этими текстурами должны грузится автоматически
+  zgl_textures_png,
+  zgl_timers, zgl_keyboard, zgl_primitives_2d, zgl_fx, zgl_utils, zgl_font, zgl_text,
+  zgl_opengl_all;
+
+const
+  MaxArray = 80;
+
+type
+  myPoint = record
+    X, Y, Z: Single;
+    count: GLshort;
+  end;
+
+var
+  dirRes    : UTF8String = 'data/';
+  fntMain   : zglPFont;
+  z: Double;
+// peremennye
+  mode: Integer;                               // rejim otobrajeniya
+  _type: Byte = 0;                             // sposob otobrajeniya
+  start: Boolean = false;
+
+  PointArr, ColorArr: array [0..100000, 0..2] of Single;
+
+  begin_mode: array[0..9] of Byte =            // massiv rejimov otobrajeniya
+                              (GL_POINTS, GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_TRIANGLES, GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP,
+                              GL_QUADS, GL_QUAD_STRIP, GL_POLYGON);
+  myPoints01: array[0..MaxArray - 1, 0..2] of Single = ((50, 150, 0), (100, 170, 0), (140, 140, 0), (130, 100, 0), (150, 50, 0), (100, 30, 0), (160, 60, 0), (100, 100, 0),//);
+ { myPoints02: array[0..7, 0..1] of Single = (}(150, 150, 0), (200, 170, 0), (240, 140, 0), (230, 100, 0), (250, 50, 0), (200, 30, 0), (260, 60, 0), (200, 100, 0),//);
+{  myPoints03: array[0..15, 0..1] of Single = (}(250, 150, 0), (300, 170, 0), (340, 140, 0), (330, 100, 0), (350, 50, 0), (300, 30, 0), (360, 60, 0), (300, 100, 0),//);
+{  myPoints04: array[0..7, 0..1] of Single = (}(350, 150, 0), (400, 170, 0), (440, 140, 0), (430, 100, 0), (450, 50, 0), (400, 30, 0), (460, 60, 0), (400, 100, 0),//);
+{  myPoints05: array[0..15, 0..1] of Single = (}(450, 150, 0), (500, 170, 0), (540, 140, 0), (530, 100, 0), (550, 50, 0), (500, 30, 0), (560, 60, 0), (500, 100, 0),//);
+{  myPoints06: array[0..7, 0..1] of Single = (}(550, 150, 0), (600, 170, 0), (640, 140, 0), (630, 100, 0), (650, 50, 0), (600, 30, 0), (660, 60, 0), (600, 100, 0),//);
+{  myPoints07: array[0..15, 0..1] of Single = (}(650, 150, 0), (700, 170, 0), (740, 140, 0), (730, 100, 0), (750, 50, 0), (700, 30, 0), (760, 60, 0), (700, 100, 0),//);
+{  myPoints08: array[0..7, 0..1] of Single = (}(50, 250, 0), (100, 270, 0), (140, 240, 0), (130, 200, 0), (150, 150, 0), (100, 130, 0), (60, 160, 0), (100, 200, 0),//);
+{  myPoints09: array[0..15, 0..1] of Single = (}(50, 350, 0), (100, 370, 0), (140, 340, 0), (130, 300, 0), (150, 250, 0), (100, 230, 0), (60, 260, 0), (100, 300, 0),//);
+{  myPoints10: array[0..7, 0..1] of Single = (}(50, 450, 0), (100, 470, 0), (140, 440, 0), (130, 400, 0), (150, 350, 0), (100, 330, 0), (60, 360, 0), (100, 400, 0));
+
+  myColor01: array[0..MaxArray - 1, 0..2] of Single = ((1, 0, 0), (1, 0.5, 0), (1, 0.5, 0.5), (1, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1),//);
+{  myColor02: array[0..7, 0..2] of Single = (}(0, 1, 0), (0.5, 1, 0), (0.5, 1, 0.5), (1, 1, 0), (1, 0, 0), (1, 0, 0.5), (1, 0.5, 0.5), (1, 0, 1),//);
+{  myColor03: array[0..15, 0..2] of Single = (}(1, 0, 0), (1, 0, 0.5), (1, 0.5, 0.5), (1, 0, 1), (0, 0, 1), (0, 0.5, 1), (0.5, 0.5, 1), (0, 1, 1),//);
+{  myColor04: array[0..7, 0..2] of Single = (}(0, 0, 1), (0, 0.5, 1), (0.5, 0.5, 1), (0, 1, 1), (0, 1, 0), (0.5, 1, 0), (0.5, 1, 0.5), (1, 1, 0), //);
+{  myColor05: array[0..15, 0..2] of Single = (}(0.5, 0, 0), (0.5, 0.5, 0), (0.5, 0.5, 0.5), (0.5, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1),//);
+{  myColor06: array[0..7, 0..2] of Single = (}(0, 0.5, 0), (0.5, 0.5, 0), (0.5, 0.5, 0.5), (1, 0.5, 0), (0, 0.5, 0), (0, 0.5, 0.5), (0.5, 0.5, 0.5), (0, 0.5, 1),//);
+{  myColor07: array[0..15, 0..2] of Single = (}(1, 0, 0), (1, 0.5, 0), (1, 0.5, 0.5), (1, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1),//);
+{  myColor08: array[0..7, 0..2] of Single = (}(1, 0, 0), (1, 0.5, 0), (1, 0.5, 0.5), (1, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1), //);
+{  myColor09: array[0..15, 0..2] of Single = (}(1, 0, 0), (1, 0.5, 0), (1, 0.5, 0.5), (1, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1),//);
+{  myColor10: array[0..7, 0..2] of Single = (}(1, 0, 0), (1, 0.5, 0), (1, 0.5, 0.5), (1, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1));
+
+procedure MyInit;
+begin
+  fntMain := font_LoadFromFile(dirRes + 'font.zfi');
+  glClearColor(1, 1, 1, 1);
+  setTextScale(2);
+//  glNewList(1, GL_COMPILE);
+
+//  glEndList();
+
+end;
+
+procedure MyDraw;
+var
+  i, n, zz, countPoint: Integer;
+  s: String;
+  m: Double;
+  verr: array of GLshort;               // 65535 max
+  mass: array of myPoint;
+  yes: Boolean;
+begin
+//  if start then
+  m := timer_GetTicks;
+  if (_type and 1) > 0 Then
+  begin
+
+{    glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
+    glEnableClientState(GL_VERTEX_ARRAY);
+    glEnableClientState(GL_COLOR_ARRAY);      }
+
+{    SetLength(PointArr, 8000);
+    SetLength(ColorArr, 8000);}
+    SetLength(verr, 1000);
+    SetLength(mass, 1000);
+    i := 0;
+    countPoint := 0;                           // kol-vo raznyx tochek
+    for n := 0 to (MaxArray - 1) * 1000 do
+    begin
+{      if Length(PointArr) < n then
+        SetLength(PointArr, n + 1000);}
+{      PointArr[n, 0] := myPoints01[i, 0];           // x
+      ColorArr[n, 0] := myColor01[i, 0];            // y
+      PointArr[n, 1] := myPoints01[i, 1];           // x
+      ColorArr[n, 1] := myColor01[i, 1];            // y
+      PointArr[n, 2] := myPoints01[i, 2];           // x
+      ColorArr[n, 2] := myColor01[i, 2];            // y     }
+
+      if countPoint <> 0 then
+      begin
+        zz := 0;
+        yes := false;
+        while zz <= countPoint do
+        begin
+          if (mass[zz].X = myPoints01[i, 0]) and (mass[zz].Y = myPoints01[i, 1]) and (mass[zz].Z = myPoints01[i, 2]) then
+          begin
+            verr[n] := mass[zz].count;
+            yes := True;
+            break;
+          end;
+          inc(zz);
+        end;
+      end;
+      if not yes then
+      begin
+        mass[countPoint].X := myPoints01[i, 0];
+        mass[countPoint].Y := myPoints01[i, 1];
+        mass[countPoint].Z := myPoints01[i, 2];
+        mass[countPoint].count := countPoint;
+        verr[n] := countPoint;
+        PointArr[countPoint, 0] := myPoints01[i, 0];           // x
+        ColorArr[countPoint, 0] := myColor01[i, 0];            // y
+        PointArr[countPoint, 1] := myPoints01[i, 1];           // x
+        ColorArr[countPoint, 1] := myColor01[i, 1];            // y
+        PointArr[countPoint, 2] := myPoints01[i, 2];           // x
+        ColorArr[countPoint, 2] := myColor01[i, 2];
+        inc(countPoint);
+      end;
+
+      inc(i);
+      if i >= 80 then
+        i := 0;
+{      glVertexPointer(3, GL_FLOAT, 0, @myPoints01);
+
+      glColorPointer(3, GL_FLOAT, 0, @myColor01);
+      glDrawArrays(begin_mode[mode], 0, 80);      }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints02);
+      glColorPointer(3, GL_FLOAT, 0, @myColor02);
+      glDrawArrays(begin_mode[mode], 0, 8);      }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints03);
+      glColorPointer(3, GL_FLOAT, 0, @myColor03);
+      glDrawArrays(begin_mode[mode], 0, 16); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints04);
+      glColorPointer(3, GL_FLOAT, 0, @myColor04);
+      glDrawArrays(begin_mode[mode], 0, 8);}
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints05);
+      glColorPointer(3, GL_FLOAT, 0, @myColor05);
+      glDrawArrays(begin_mode[mode], 0, 16); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints06);
+      glColorPointer(3, GL_FLOAT, 0, @myColor06);
+      glDrawArrays(begin_mode[mode], 0, 8); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints07);
+      glColorPointer(3, GL_FLOAT, 0, @myColor07);
+      glDrawArrays(begin_mode[mode], 0, 16); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints08);
+      glColorPointer(3, GL_FLOAT, 0, @myColor08);
+      glDrawArrays(begin_mode[mode], 0, 8); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints09);
+      glColorPointer(3, GL_FLOAT, 0, @myColor09);
+      glDrawArrays(begin_mode[mode], 0, 16); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints10);
+      glColorPointer(3, GL_FLOAT, 0, @myColor10);
+      glDrawArrays(begin_mode[mode], 0, 8); }
+    end;
+{    glDisableClientState(GL_COLOR_ARRAY);
+    glDisableClientState(GL_VERTEX_ARRAY);
+    glPopClientAttrib();                   }
+//    z := timer_GetTicks - m;
+    start := false;
+    SetLength(verr, 0);
+    SetLength(mass, 0);
+  end
+  else begin
+ //   m := timer_GetTicks;
+//      glEnable(GL_BLEND);
+      for n := 0 to 1 do
+      begin
+        glBegin(begin_mode[mode]);
+        for i := 0 to 79 do
+        begin
+          glColor3fv(myColor01[i]);
+          glVertex3fv(myPoints01[i]);
+        end;
+        glEnd;
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 7 do
+        begin
+          glColor3fv(myColor02[i]);
+          glVertex2fv(myPoints02[i]);
+        end;
+        glEnd;}
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 16 do
+        begin
+          glColor3fv(myColor03[i]);
+          glVertex2fv(myPoints03[i]);
+        end;
+        glEnd;}
+ {       glBegin(begin_mode[mode]);
+        for i := 0 to 7 do
+        begin
+          glColor3fv(myColor04[i]);
+          glVertex2fv(myPoints04[i]);
+        end;
+        glEnd;}
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 16 do
+        begin
+          glColor3fv(myColor05[i]);
+          glVertex2fv(myPoints05[i]);
+        end;
+        glEnd; }
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 7 do
+        begin
+          glColor3fv(myColor06[i]);
+          glVertex2fv(myPoints06[i]);
+        end;
+        glEnd; }
+ {       glBegin(begin_mode[mode]);
+        for i := 0 to 16 do
+        begin
+          glColor3fv(myColor07[i]);
+          glVertex2fv(myPoints07[i]);
+        end;
+        glEnd; }
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 7 do
+        begin
+          glColor3fv(myColor08[i]);
+          glVertex2fv(myPoints08[i]);
+        end;
+        glEnd; }
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 16 do
+        begin
+          glColor3fv(myColor09[i]);
+          glVertex2fv(myPoints09[i]);
+        end;
+        glEnd;
+}{        glBegin(begin_mode[mode]);
+        for i := 0 to 7 do
+        begin
+          glColor3fv(myColor10[i]);
+          glVertex2fv(myPoints10[i]);
+        end;
+        glEnd;}
+      end;
+//      glDisable(GL_BLEND);
+//    z := timer_GetTicks - m;
+//    start := false;
+  end;
+
+  if (_type and 1) > 0 Then
+  begin
+    glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
+    glEnableClientState(GL_VERTEX_ARRAY);
+    glEnableClientState(GL_COLOR_ARRAY);
+
+    glVertexPointer(3, GL_FLOAT, 0, @PointArr[0]);
+
+    glColorPointer(3, GL_FLOAT, 0, @ColorArr[0]);
+ //   glDrawArrays(begin_mode[mode], 0, MaxArray * 1);
+
+    glDrawElements(begin_mode[mode], MaxArray * 1000 - 1, GL_UNSIGNED_SHORT, @verr);
+    glDisableClientState(GL_COLOR_ARRAY);
+    glDisableClientState(GL_VERTEX_ARRAY);
+    glPopClientAttrib();
+  end;
+
+  z := timer_GetTicks - m;
+  glColor4f(0, 0.5, 0, 1);
+  text_Draw(fntMain, 550, 300, utf8_Copy('FPS = ' + u_IntToStr(zgl_Get(RENDER_FPS))));
+  if mode = GL_POINTS then s := 'GL_POINTS';              //!!!!!!
+  if mode = GL_LINES then s := 'GL_LINES';                //!!!!!!
+  if mode = GL_LINE_LOOP then s := 'GL_LINE_LOOP';
+  if mode = GL_LINE_STRIP then s := 'GL_LINE_STRIP';
+  if mode = GL_TRIANGLES then s := 'GL_TRIANGLES';        //!!!!!!
+  if mode = GL_TRIANGLE_FAN then s := 'GL_TRIANGLE_FAN';
+  if mode = GL_TRIANGLE_STRIP then s := 'GL_TRIANGLE_STRIP';
+  if mode = GL_QUADS then s := 'GL_QUADS';
+  if mode = GL_QUAD_STRIP then s := 'GL_QUAD_STRIP';
+  if mode = GL_POLYGON then s := 'GL_POLYGON';
+  text_Draw(fntMain, 550, 330, utf8_Copy('mode: ' + s));
+  if _type = 0 then
+    s := 'vertex'
+  else
+    s := 'vertex pointer';
+  text_Draw(fntMain, 550, 360, utf8_Copy('type: ' + s));
+  text_Draw(fntMain, 550, 390, utf8_Copy('n = ' + u_IntToStr(round(z))));
+
+{  SetLength(PointArr, 0);
+  SetLength(ColorArr, 0);}
+end;
+
+procedure MyTimer;
+begin
+  if key_Press(K_ESCAPE) then winOn := false;
+
+  if key_Press(K_KP_ADD) then
+  begin
+    inc(mode);
+    if mode > 9 then mode := 0;
+  end;
+  if key_Press(K_KP_SUB) then
+  begin
+    dec(mode);
+    if mode < 0 then mode := 9;
+  end;
+  if key_Press(K_F1) then
+    _type := _type xor 1;
+
+//  if key_Press(K_SPACE) then start := true;
+
+  key_ClearState;
+end;
+
+begin
+  timer_Add(@MyTimer, 20);
+  zgl_Reg(SYS_LOAD, @MyInit);
+  zgl_Reg(SYS_DRAW, @MyDraw);
+
+  zgl_Init(8, 8);
+end.
+

+ 437 - 0
00001-test/ZenTest001.lps

@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectSession>
+    <Version Value="11"/>
+    <BuildModes Active="Default"/>
+    <Units Count="43">
+      <Unit0>
+        <Filename Value="ZenTest001.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <IsVisibleTab Value="True"/>
+        <TopLine Value="258"/>
+        <CursorPos X="44" Y="284"/>
+        <FoldState Value=" TLkI02422@"/>
+        <UsageCount Value="69"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="../../Lib/zengl-src-0.3.14/demos/Lazarus/16 - Physics/demo16.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="142"/>
+        <CursorPos X="23" Y="12"/>
+        <UsageCount Value="6"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="../../Lib/zengl-src-0.3.14/headers/zglCustomConfig.cfg"/>
+        <EditorIndex Value="-1"/>
+        <UsageCount Value="6"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit2>
+      <Unit3>
+        <Filename Value="../../Lib/zengl-src-0.3.14/demos/Lazarus/02 - Resources/demo02.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="115"/>
+        <CursorPos X="7" Y="11"/>
+        <UsageCount Value="6"/>
+      </Unit3>
+      <Unit4>
+        <Filename Value="../../Lib/zengl-src-0.3.14/demos/Lazarus/01 - Initialization/demo01.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="44"/>
+        <CursorPos X="12" Y="52"/>
+        <UsageCount Value="6"/>
+      </Unit4>
+      <Unit5>
+        <Filename Value="../../Lib/zengl-src-0.3.14/demos/Lazarus/05 - Primitives/demo05.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="58"/>
+        <CursorPos X="29" Y="86"/>
+        <UsageCount Value="6"/>
+      </Unit5>
+      <Unit6>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_primitives_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="217"/>
+        <CursorPos X="18" Y="124"/>
+        <UsageCount Value="10"/>
+      </Unit6>
+      <Unit7>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_main.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="622"/>
+        <CursorPos X="19" Y="639"/>
+        <UsageCount Value="7"/>
+      </Unit7>
+      <Unit8>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_application.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="112"/>
+        <CursorPos X="17" Y="129"/>
+        <UsageCount Value="10"/>
+      </Unit8>
+      <Unit9>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_render.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="104"/>
+        <CursorPos X="3" Y="106"/>
+        <UsageCount Value="10"/>
+      </Unit9>
+      <Unit10>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_screen.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="701"/>
+        <CursorPos X="11" Y="719"/>
+        <FoldState Value=" T3qU0C111~"/>
+        <UsageCount Value="10"/>
+      </Unit10>
+      <Unit11>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_render_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="77"/>
+        <CursorPos X="13" Y="90"/>
+        <UsageCount Value="10"/>
+      </Unit11>
+      <Unit12>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_opengl_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="444"/>
+        <CursorPos X="17" Y="474"/>
+        <UsageCount Value="10"/>
+      </Unit12>
+      <Unit13>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/packages/opengl/src/gl.pp"/>
+        <UnitName Value="GL"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1281"/>
+        <CursorPos X="42" Y="1305"/>
+        <UsageCount Value="17"/>
+      </Unit13>
+      <Unit14>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_opengl.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="264"/>
+        <UsageCount Value="10"/>
+      </Unit14>
+      <Unit15>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/packages/opengl/src/glu.pp"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="477"/>
+        <CursorPos X="51" Y="413"/>
+        <UsageCount Value="6"/>
+      </Unit15>
+      <Unit16>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/packages/opengl/src/glx.pp"/>
+        <UnitName Value="GLX"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="32"/>
+        <CursorPos X="53" Y="40"/>
+        <UsageCount Value="6"/>
+      </Unit16>
+      <Unit17>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_keyboard.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="328"/>
+        <CursorPos Y="357"/>
+        <UsageCount Value="6"/>
+      </Unit17>
+      <Unit18>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_resources.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="30"/>
+        <CursorPos X="13" Y="174"/>
+        <UsageCount Value="7"/>
+      </Unit18>
+      <Unit19>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_window.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="412"/>
+        <CursorPos X="8" Y="431"/>
+        <UsageCount Value="7"/>
+      </Unit19>
+      <Unit20>
+        <Filename Value="../../Zengl_SRC/src/zgl_main.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="665"/>
+        <CursorPos X="31" Y="682"/>
+        <UsageCount Value="19"/>
+      </Unit20>
+      <Unit21>
+        <Filename Value="../../Zengl_SRC/demos/Lazarus/05 - Primitives/demo05.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="50"/>
+        <UsageCount Value="8"/>
+      </Unit21>
+      <Unit22>
+        <Filename Value="../../Zengl_SRC/src/zgl_screen.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="516"/>
+        <CursorPos X="51" Y="535"/>
+        <UsageCount Value="8"/>
+      </Unit22>
+      <Unit23>
+        <Filename Value="../../Zengl_SRC/src/zgl_application.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="247"/>
+        <CursorPos Y="271"/>
+        <UsageCount Value="13"/>
+      </Unit23>
+      <Unit24>
+        <Filename Value="../../Zengl_SRC/src/zgl_window.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="9"/>
+        <CursorPos X="43" Y="31"/>
+        <UsageCount Value="13"/>
+      </Unit24>
+      <Unit25>
+        <Filename Value="../../Zengl_SRC/src/zgl_render.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="53"/>
+        <CursorPos X="18" Y="72"/>
+        <UsageCount Value="8"/>
+      </Unit25>
+      <Unit26>
+        <Filename Value="../../Zengl_SRC/src/zgl_opengl.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="39"/>
+        <CursorPos X="92" Y="43"/>
+        <UsageCount Value="8"/>
+      </Unit26>
+      <Unit27>
+        <Filename Value="../../Zengl_SRC/src/zgl_opengl_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="353"/>
+        <CursorPos X="3" Y="378"/>
+        <UsageCount Value="17"/>
+      </Unit27>
+      <Unit28>
+        <Filename Value="../../Zengl_SRC/src/zgl_keyboard.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="126"/>
+        <CursorPos X="3" Y="164"/>
+        <UsageCount Value="8"/>
+      </Unit28>
+      <Unit29>
+        <Filename Value="../../Zengl_SRC/demos/Lazarus/08 - Sprite Engine/demo08.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="28"/>
+        <CursorPos X="69" Y="39"/>
+        <UsageCount Value="20"/>
+      </Unit29>
+      <Unit30>
+        <Filename Value="../../Zengl_SRC/src/zgl_text.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="249"/>
+        <CursorPos X="3" Y="262"/>
+        <UsageCount Value="17"/>
+      </Unit30>
+      <Unit31>
+        <Filename Value="../../Zengl_SRC/src/zgl_font.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="155"/>
+        <CursorPos X="17" Y="167"/>
+        <UsageCount Value="20"/>
+      </Unit31>
+      <Unit32>
+        <Filename Value="../../Zengl_SRC/src/zgl_file.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="60"/>
+        <CursorPos X="11" Y="78"/>
+        <UsageCount Value="16"/>
+      </Unit32>
+      <Unit33>
+        <Filename Value="../../Zengl_SRC/src/zgl_log.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="85"/>
+        <CursorPos X="46" Y="95"/>
+        <UsageCount Value="7"/>
+      </Unit33>
+      <Unit34>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/rtl/unix/bunxovlh.inc"/>
+        <EditorIndex Value="-1"/>
+        <CursorPos X="11" Y="38"/>
+        <UsageCount Value="12"/>
+      </Unit34>
+      <Unit35>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/rtl/unix/bunxovl.inc"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="149"/>
+        <CursorPos X="3" Y="153"/>
+        <UsageCount Value="12"/>
+      </Unit35>
+      <Unit36>
+        <Filename Value="../../Zengl_SRC/src/zgl_memory.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="93"/>
+        <CursorPos Y="125"/>
+        <UsageCount Value="15"/>
+      </Unit36>
+      <Unit37>
+        <Filename Value="../../Lib/dglOpenGL.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="11581"/>
+        <CursorPos X="21" Y="11613"/>
+        <UsageCount Value="10"/>
+      </Unit37>
+      <Unit38>
+        <Filename Value="../../Zengl_SRC/src/zgl_utils.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="175"/>
+        <CursorPos Y="198"/>
+        <UsageCount Value="17"/>
+      </Unit38>
+      <Unit39>
+        <Filename Value="../../Zengl_SRC/src/zgl_opengles_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="299"/>
+        <CursorPos X="48" Y="324"/>
+        <UsageCount Value="16"/>
+      </Unit39>
+      <Unit40>
+        <Filename Value="../../Zengl_SRC/src/zgl_primitives_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="186"/>
+        <UsageCount Value="16"/>
+      </Unit40>
+      <Unit41>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/packages/opengles/src/gles20.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1704"/>
+        <CursorPos X="12" Y="1100"/>
+        <UsageCount Value="9"/>
+      </Unit41>
+      <Unit42>
+        <Filename Value="../../Zengl_SRC/src/zgl_timers.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="185"/>
+        <CursorPos X="26" Y="240"/>
+        <UsageCount Value="13"/>
+      </Unit42>
+    </Units>
+    <JumpHistory Count="30" HistoryIndex="29">
+      <Position1>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position1>
+      <Position2>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position2>
+      <Position3>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position3>
+      <Position4>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position4>
+      <Position5>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position5>
+      <Position6>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position6>
+      <Position7>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position7>
+      <Position8>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position8>
+      <Position9>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position9>
+      <Position10>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position10>
+      <Position11>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position11>
+      <Position12>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position12>
+      <Position13>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position13>
+      <Position14>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position14>
+      <Position15>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position15>
+      <Position16>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position16>
+      <Position17>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position17>
+      <Position18>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position18>
+      <Position19>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position19>
+      <Position20>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position20>
+      <Position21>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position21>
+      <Position22>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position22>
+      <Position23>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position23>
+      <Position24>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position24>
+      <Position25>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position25>
+      <Position26>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position26>
+      <Position27>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position27>
+      <Position28>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position28>
+      <Position29>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position29>
+      <Position30>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="117" Column="8" TopLine="82"/>
+      </Position30>
+    </JumpHistory>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes Count="0" ActiveMode=""/>
+    </RunParams>
+  </ProjectSession>
+</CONFIG>

+ 70 - 0
00001-test/backup/ZenTest001.lpi

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="11"/>
+    <General>
+      <Flags>
+        <MainUnitHasCreateFormStatements Value="False"/>
+        <MainUnitHasTitleStatement Value="False"/>
+        <MainUnitHasScaledStatement Value="False"/>
+      </Flags>
+      <SessionStorage Value="InProjectDir"/>
+      <MainUnit Value="0"/>
+      <Title Value="ZenTest001"/>
+      <UseAppBundle Value="False"/>
+      <ResourceType Value="res"/>
+    </General>
+    <BuildModes Count="1">
+      <Item1 Name="Default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+      <UseFileFilters Value="True"/>
+    </PublishOptions>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes Count="0"/>
+    </RunParams>
+    <Units Count="1">
+      <Unit0>
+        <Filename Value="ZenTest001.lpr"/>
+        <IsPartOfProject Value="True"/>
+      </Unit0>
+    </Units>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="11"/>
+    <Target>
+      <Filename Value="ZenTest001"/>
+    </Target>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir);../../Zengl_SRC/headers"/>
+      <OtherUnitFiles Value="../../Zengl_SRC/src;../../Zengl_SRC/lib/zlib/x86_64-linux;../../Zengl_SRC/lib/zip/x86_64-linux;../../Zengl_SRC/lib/theora/x86_64-linux;../../Zengl_SRC/lib/ogg/x86_64-linux;../../Zengl_SRC/lib/jpeg/x86_64-linux;../../Lib"/>
+      <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
+    </SearchPaths>
+    <CodeGeneration>
+      <SmartLinkUnit Value="True"/>
+      <SmallerCode Value="True"/>
+    </CodeGeneration>
+    <Linking>
+      <Debugging>
+        <StripSymbols Value="True"/>
+        <UseExternalDbgSyms Value="True"/>
+      </Debugging>
+      <LinkSmart Value="True"/>
+    </Linking>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 344 - 0
00001-test/backup/ZenTest001.lpr

@@ -0,0 +1,344 @@
+program ZenTest001;
+
+{$I zglCustomConfig.cfg}
+
+{$IFDEF WINDOWS}
+  {$R *.res}
+{$ENDIF}
+
+uses
+  zgl_window, zgl_screen, zgl_application, zgl_main,
+  gl,
+//  dglOpenGL,                                     // добавил чтоб проверить работоспособность
+  // это вообще недоработка, если мы используем фонт и через какие-то текстуры, то файлы для работы с этими текстурами должны грузится автоматически
+  zgl_textures_png,
+  zgl_timers, zgl_keyboard, zgl_primitives_2d, zgl_fx, zgl_utils, zgl_font, zgl_text,
+  zgl_opengl_all;
+
+const
+  MaxArray = 80;
+
+type
+  myPoint = record
+    X, Y, Z: Single;
+    count: GLshort;
+  end;
+
+var
+  dirRes    : UTF8String = 'data/';
+  fntMain   : zglPFont;
+  z: Double;
+// peremennye
+  mode: Integer;                               // rejim otobrajeniya
+  _type: Byte = 0;                             // sposob otobrajeniya
+  start: Boolean = false;
+
+  PointArr, ColorArr: array [0..100000, 0..2] of Single;
+
+  begin_mode: array[0..9] of Byte =            // massiv rejimov otobrajeniya
+                              (GL_POINTS, GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_TRIANGLES, GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP,
+                              GL_QUADS, GL_QUAD_STRIP, GL_POLYGON);
+  myPoints01: array[0..MaxArray - 1, 0..2] of Single = ((50, 150, 0), (100, 170, 0), (140, 140, 0), (130, 100, 0), (150, 50, 0), (100, 30, 0), (160, 60, 0), (100, 100, 0),//);
+ { myPoints02: array[0..7, 0..1] of Single = (}(150, 150, 0), (200, 170, 0), (240, 140, 0), (230, 100, 0), (250, 50, 0), (200, 30, 0), (260, 60, 0), (200, 100, 0),//);
+{  myPoints03: array[0..15, 0..1] of Single = (}(250, 150, 0), (300, 170, 0), (340, 140, 0), (330, 100, 0), (350, 50, 0), (300, 30, 0), (360, 60, 0), (300, 100, 0),//);
+{  myPoints04: array[0..7, 0..1] of Single = (}(350, 150, 0), (400, 170, 0), (440, 140, 0), (430, 100, 0), (450, 50, 0), (400, 30, 0), (460, 60, 0), (400, 100, 0),//);
+{  myPoints05: array[0..15, 0..1] of Single = (}(450, 150, 0), (500, 170, 0), (540, 140, 0), (530, 100, 0), (550, 50, 0), (500, 30, 0), (560, 60, 0), (500, 100, 0),//);
+{  myPoints06: array[0..7, 0..1] of Single = (}(550, 150, 0), (600, 170, 0), (640, 140, 0), (630, 100, 0), (650, 50, 0), (600, 30, 0), (660, 60, 0), (600, 100, 0),//);
+{  myPoints07: array[0..15, 0..1] of Single = (}(650, 150, 0), (700, 170, 0), (740, 140, 0), (730, 100, 0), (750, 50, 0), (700, 30, 0), (760, 60, 0), (700, 100, 0),//);
+{  myPoints08: array[0..7, 0..1] of Single = (}(50, 250, 0), (100, 270, 0), (140, 240, 0), (130, 200, 0), (150, 150, 0), (100, 130, 0), (60, 160, 0), (100, 200, 0),//);
+{  myPoints09: array[0..15, 0..1] of Single = (}(50, 350, 0), (100, 370, 0), (140, 340, 0), (130, 300, 0), (150, 250, 0), (100, 230, 0), (60, 260, 0), (100, 300, 0),//);
+{  myPoints10: array[0..7, 0..1] of Single = (}(50, 450, 0), (100, 470, 0), (140, 440, 0), (130, 400, 0), (150, 350, 0), (100, 330, 0), (60, 360, 0), (100, 400, 0));
+
+  myColor01: array[0..MaxArray - 1, 0..2] of Single = ((1, 0, 0), (1, 0.5, 0), (1, 0.5, 0.5), (1, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1),//);
+{  myColor02: array[0..7, 0..2] of Single = (}(0, 1, 0), (0.5, 1, 0), (0.5, 1, 0.5), (1, 1, 0), (1, 0, 0), (1, 0, 0.5), (1, 0.5, 0.5), (1, 0, 1),//);
+{  myColor03: array[0..15, 0..2] of Single = (}(1, 0, 0), (1, 0, 0.5), (1, 0.5, 0.5), (1, 0, 1), (0, 0, 1), (0, 0.5, 1), (0.5, 0.5, 1), (0, 1, 1),//);
+{  myColor04: array[0..7, 0..2] of Single = (}(0, 0, 1), (0, 0.5, 1), (0.5, 0.5, 1), (0, 1, 1), (0, 1, 0), (0.5, 1, 0), (0.5, 1, 0.5), (1, 1, 0), //);
+{  myColor05: array[0..15, 0..2] of Single = (}(0.5, 0, 0), (0.5, 0.5, 0), (0.5, 0.5, 0.5), (0.5, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1),//);
+{  myColor06: array[0..7, 0..2] of Single = (}(0, 0.5, 0), (0.5, 0.5, 0), (0.5, 0.5, 0.5), (1, 0.5, 0), (0, 0.5, 0), (0, 0.5, 0.5), (0.5, 0.5, 0.5), (0, 0.5, 1),//);
+{  myColor07: array[0..15, 0..2] of Single = (}(1, 0, 0), (1, 0.5, 0), (1, 0.5, 0.5), (1, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1),//);
+{  myColor08: array[0..7, 0..2] of Single = (}(1, 0, 0), (1, 0.5, 0), (1, 0.5, 0.5), (1, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1), //);
+{  myColor09: array[0..15, 0..2] of Single = (}(1, 0, 0), (1, 0.5, 0), (1, 0.5, 0.5), (1, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1),//);
+{  myColor10: array[0..7, 0..2] of Single = (}(1, 0, 0), (1, 0.5, 0), (1, 0.5, 0.5), (1, 1, 0), (0, 1, 0), (0, 1, 0.5), (0.5, 1, 0.5), (0, 1, 1));
+
+procedure MyInit;
+begin
+  fntMain := font_LoadFromFile(dirRes + 'font.zfi');
+  glClearColor(1, 1, 1, 1);
+  setTextScale(2);
+//  glNewList(1, GL_COMPILE);
+
+//  glEndList();
+
+end;
+
+procedure MyDraw;
+var
+  i, n, zz, countPoint: Integer;
+  s: String;
+  m: Double;
+  verr: array of GLshort;               // 65535 max
+  mass: array of myPoint;
+  yes: Boolean;
+begin
+//  if start then
+  m := timer_GetTicks;
+  if (_type and 1) > 0 Then
+  begin
+
+{    glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
+    glEnableClientState(GL_VERTEX_ARRAY);
+    glEnableClientState(GL_COLOR_ARRAY);      }
+
+{    SetLength(PointArr, 8000);
+    SetLength(ColorArr, 8000);}
+    SetLength(verr, 1000);
+    SetLength(mass, 1000);
+    i := 0;
+    countPoint := 0;                           // kol-vo raznyx tochek
+    for n := 0 to (MaxArray - 1) * 1 do
+    begin
+{      if Length(PointArr) < n then
+        SetLength(PointArr, n + 1000);}
+{      PointArr[n, 0] := myPoints01[i, 0];           // x
+      ColorArr[n, 0] := myColor01[i, 0];            // y
+      PointArr[n, 1] := myPoints01[i, 1];           // x
+      ColorArr[n, 1] := myColor01[i, 1];            // y
+      PointArr[n, 2] := myPoints01[i, 2];           // x
+      ColorArr[n, 2] := myColor01[i, 2];            // y     }
+
+      if countPoint <> 0 then
+      begin
+        zz := 0;
+        yes := false;
+        while zz <= countPoint do
+        begin
+          if (mass[zz].X = myPoints01[i, 0]) and (mass[zz].Y = myPoints01[i, 1]) and (mass[zz].Z = myPoints01[i, 2]) then
+          begin
+            verr[n] := mass[zz].count;
+            yes := True;
+            break;
+          end;
+          inc(zz);
+        end;
+      end;
+      if not yes then
+      begin
+        mass[countPoint].X := myPoints01[i, 0];
+        mass[countPoint].Y := myPoints01[i, 1];
+        mass[countPoint].Z := myPoints01[i, 2];
+        mass[countPoint].count := countPoint;
+        verr[n] := countPoint;
+        PointArr[countPoint, 0] := myPoints01[i, 0];           // x
+        ColorArr[countPoint, 0] := myColor01[i, 0];            // y
+        PointArr[countPoint, 1] := myPoints01[i, 1];           // x
+        ColorArr[countPoint, 1] := myColor01[i, 1];            // y
+        PointArr[countPoint, 2] := myPoints01[i, 2];           // x
+        ColorArr[countPoint, 2] := myColor01[i, 2];
+        inc(countPoint);
+      end;
+
+      inc(i);
+      if i >= 80 then
+        i := 0;
+{      glVertexPointer(3, GL_FLOAT, 0, @myPoints01);
+
+      glColorPointer(3, GL_FLOAT, 0, @myColor01);
+      glDrawArrays(begin_mode[mode], 0, 80);      }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints02);
+      glColorPointer(3, GL_FLOAT, 0, @myColor02);
+      glDrawArrays(begin_mode[mode], 0, 8);      }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints03);
+      glColorPointer(3, GL_FLOAT, 0, @myColor03);
+      glDrawArrays(begin_mode[mode], 0, 16); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints04);
+      glColorPointer(3, GL_FLOAT, 0, @myColor04);
+      glDrawArrays(begin_mode[mode], 0, 8);}
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints05);
+      glColorPointer(3, GL_FLOAT, 0, @myColor05);
+      glDrawArrays(begin_mode[mode], 0, 16); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints06);
+      glColorPointer(3, GL_FLOAT, 0, @myColor06);
+      glDrawArrays(begin_mode[mode], 0, 8); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints07);
+      glColorPointer(3, GL_FLOAT, 0, @myColor07);
+      glDrawArrays(begin_mode[mode], 0, 16); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints08);
+      glColorPointer(3, GL_FLOAT, 0, @myColor08);
+      glDrawArrays(begin_mode[mode], 0, 8); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints09);
+      glColorPointer(3, GL_FLOAT, 0, @myColor09);
+      glDrawArrays(begin_mode[mode], 0, 16); }
+
+{      glVertexPointer(2, GL_FLOAT, 0, @myPoints10);
+      glColorPointer(3, GL_FLOAT, 0, @myColor10);
+      glDrawArrays(begin_mode[mode], 0, 8); }
+    end;
+{    glDisableClientState(GL_COLOR_ARRAY);
+    glDisableClientState(GL_VERTEX_ARRAY);
+    glPopClientAttrib();                   }
+//    z := timer_GetTicks - m;
+    start := false;
+    SetLength(verr, 0);
+    SetLength(mass, 0);
+  end
+  else begin
+ //   m := timer_GetTicks;
+//      glEnable(GL_BLEND);
+      for n := 0 to 1 do
+      begin
+        glBegin(begin_mode[mode]);
+        for i := 0 to 79 do
+        begin
+          glColor3fv(myColor01[i]);
+          glVertex3fv(myPoints01[i]);
+        end;
+        glEnd;
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 7 do
+        begin
+          glColor3fv(myColor02[i]);
+          glVertex2fv(myPoints02[i]);
+        end;
+        glEnd;}
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 16 do
+        begin
+          glColor3fv(myColor03[i]);
+          glVertex2fv(myPoints03[i]);
+        end;
+        glEnd;}
+ {       glBegin(begin_mode[mode]);
+        for i := 0 to 7 do
+        begin
+          glColor3fv(myColor04[i]);
+          glVertex2fv(myPoints04[i]);
+        end;
+        glEnd;}
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 16 do
+        begin
+          glColor3fv(myColor05[i]);
+          glVertex2fv(myPoints05[i]);
+        end;
+        glEnd; }
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 7 do
+        begin
+          glColor3fv(myColor06[i]);
+          glVertex2fv(myPoints06[i]);
+        end;
+        glEnd; }
+ {       glBegin(begin_mode[mode]);
+        for i := 0 to 16 do
+        begin
+          glColor3fv(myColor07[i]);
+          glVertex2fv(myPoints07[i]);
+        end;
+        glEnd; }
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 7 do
+        begin
+          glColor3fv(myColor08[i]);
+          glVertex2fv(myPoints08[i]);
+        end;
+        glEnd; }
+{        glBegin(begin_mode[mode]);
+        for i := 0 to 16 do
+        begin
+          glColor3fv(myColor09[i]);
+          glVertex2fv(myPoints09[i]);
+        end;
+        glEnd;
+}{        glBegin(begin_mode[mode]);
+        for i := 0 to 7 do
+        begin
+          glColor3fv(myColor10[i]);
+          glVertex2fv(myPoints10[i]);
+        end;
+        glEnd;}
+      end;
+//      glDisable(GL_BLEND);
+//    z := timer_GetTicks - m;
+//    start := false;
+  end;
+
+  if (_type and 1) > 0 Then
+  begin
+    glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
+    glEnableClientState(GL_VERTEX_ARRAY);
+    glEnableClientState(GL_COLOR_ARRAY);
+
+    glVertexPointer(3, GL_FLOAT, 0, @PointArr[0]);
+
+    glColorPointer(3, GL_FLOAT, 0, @ColorArr[0]);
+ //   glDrawArrays(begin_mode[mode], 0, MaxArray * 1);
+
+    glDrawElements(begin_mode[mode], MaxArray, GL_UNSIGNED_SHORT, @verr);
+    glDisableClientState(GL_COLOR_ARRAY);
+    glDisableClientState(GL_VERTEX_ARRAY);
+    glPopClientAttrib();
+  end;
+
+  z := timer_GetTicks - m;
+  glColor4f(0, 0.5, 0, 1);
+  text_Draw(fntMain, 550, 300, utf8_Copy('FPS = ' + u_IntToStr(zgl_Get(RENDER_FPS))));
+  if mode = GL_POINTS then s := 'GL_POINTS';              //!!!!!!
+  if mode = GL_LINES then s := 'GL_LINES';                //!!!!!!
+  if mode = GL_LINE_LOOP then s := 'GL_LINE_LOOP';
+  if mode = GL_LINE_STRIP then s := 'GL_LINE_STRIP';
+  if mode = GL_TRIANGLES then s := 'GL_TRIANGLES';        //!!!!!!
+  if mode = GL_TRIANGLE_FAN then s := 'GL_TRIANGLE_FAN';
+  if mode = GL_TRIANGLE_STRIP then s := 'GL_TRIANGLE_STRIP';
+  if mode = GL_QUADS then s := 'GL_QUADS';
+  if mode = GL_QUAD_STRIP then s := 'GL_QUAD_STRIP';
+  if mode = GL_POLYGON then s := 'GL_POLYGON';
+  text_Draw(fntMain, 550, 330, utf8_Copy('mode: ' + s));
+  if _type = 0 then
+    s := 'vertex'
+  else
+    s := 'vertex pointer';
+  text_Draw(fntMain, 550, 360, utf8_Copy('type: ' + s));
+  text_Draw(fntMain, 550, 390, utf8_Copy('n = ' + u_IntToStr(round(z))));
+
+{  SetLength(PointArr, 0);
+  SetLength(ColorArr, 0);}
+end;
+
+procedure MyTimer;
+begin
+  if key_Press(K_ESCAPE) then winOn := false;
+
+  if key_Press(K_KP_ADD) then
+  begin
+    inc(mode);
+    if mode > 9 then mode := 0;
+  end;
+  if key_Press(K_KP_SUB) then
+  begin
+    dec(mode);
+    if mode < 0 then mode := 9;
+  end;
+  if key_Press(K_F1) then
+    _type := _type xor 1;
+
+//  if key_Press(K_SPACE) then start := true;
+
+  key_ClearState;
+end;
+
+begin
+  timer_Add(@MyTimer, 20);
+  zgl_Reg(SYS_LOAD, @MyInit);
+  zgl_Reg(SYS_DRAW, @MyDraw);
+
+  zgl_Init(8, 8);
+end.
+

+ 448 - 0
00001-test/backup/ZenTest001.lps

@@ -0,0 +1,448 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectSession>
+    <Version Value="11"/>
+    <BuildModes Active="Default"/>
+    <Units Count="43">
+      <Unit0>
+        <Filename Value="ZenTest001.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <IsVisibleTab Value="True"/>
+        <TopLine Value="42"/>
+        <CursorPos X="73" Y="64"/>
+        <FoldState Value=" TLkI02422@"/>
+        <UsageCount Value="68"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="../../Lib/zengl-src-0.3.14/demos/Lazarus/16 - Physics/demo16.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="142"/>
+        <CursorPos X="23" Y="12"/>
+        <UsageCount Value="6"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="../../Lib/zengl-src-0.3.14/headers/zglCustomConfig.cfg"/>
+        <EditorIndex Value="-1"/>
+        <UsageCount Value="6"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit2>
+      <Unit3>
+        <Filename Value="../../Lib/zengl-src-0.3.14/demos/Lazarus/02 - Resources/demo02.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="115"/>
+        <CursorPos X="7" Y="11"/>
+        <UsageCount Value="6"/>
+      </Unit3>
+      <Unit4>
+        <Filename Value="../../Lib/zengl-src-0.3.14/demos/Lazarus/01 - Initialization/demo01.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="44"/>
+        <CursorPos X="12" Y="52"/>
+        <UsageCount Value="6"/>
+      </Unit4>
+      <Unit5>
+        <Filename Value="../../Lib/zengl-src-0.3.14/demos/Lazarus/05 - Primitives/demo05.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="58"/>
+        <CursorPos X="29" Y="86"/>
+        <UsageCount Value="6"/>
+      </Unit5>
+      <Unit6>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_primitives_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="217"/>
+        <CursorPos X="18" Y="124"/>
+        <UsageCount Value="10"/>
+      </Unit6>
+      <Unit7>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_main.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="622"/>
+        <CursorPos X="19" Y="639"/>
+        <UsageCount Value="7"/>
+      </Unit7>
+      <Unit8>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_application.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="112"/>
+        <CursorPos X="17" Y="129"/>
+        <UsageCount Value="10"/>
+      </Unit8>
+      <Unit9>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_render.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="104"/>
+        <CursorPos X="3" Y="106"/>
+        <UsageCount Value="10"/>
+      </Unit9>
+      <Unit10>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_screen.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="701"/>
+        <CursorPos X="11" Y="719"/>
+        <FoldState Value=" T3qU0C111~"/>
+        <UsageCount Value="10"/>
+      </Unit10>
+      <Unit11>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_render_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="77"/>
+        <CursorPos X="13" Y="90"/>
+        <UsageCount Value="10"/>
+      </Unit11>
+      <Unit12>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_opengl_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="444"/>
+        <CursorPos X="17" Y="474"/>
+        <UsageCount Value="10"/>
+      </Unit12>
+      <Unit13>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/packages/opengl/src/gl.pp"/>
+        <UnitName Value="GL"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1281"/>
+        <CursorPos X="42" Y="1305"/>
+        <UsageCount Value="17"/>
+      </Unit13>
+      <Unit14>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_opengl.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="264"/>
+        <UsageCount Value="10"/>
+      </Unit14>
+      <Unit15>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/packages/opengl/src/glu.pp"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="477"/>
+        <CursorPos X="51" Y="413"/>
+        <UsageCount Value="6"/>
+      </Unit15>
+      <Unit16>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/packages/opengl/src/glx.pp"/>
+        <UnitName Value="GLX"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="32"/>
+        <CursorPos X="53" Y="40"/>
+        <UsageCount Value="6"/>
+      </Unit16>
+      <Unit17>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_keyboard.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="328"/>
+        <CursorPos Y="357"/>
+        <UsageCount Value="6"/>
+      </Unit17>
+      <Unit18>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_resources.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="30"/>
+        <CursorPos X="13" Y="174"/>
+        <UsageCount Value="7"/>
+      </Unit18>
+      <Unit19>
+        <Filename Value="../../Lib/zengl-src-0.3.14/src/zgl_window.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="412"/>
+        <CursorPos X="8" Y="431"/>
+        <UsageCount Value="7"/>
+      </Unit19>
+      <Unit20>
+        <Filename Value="../../Zengl_SRC/src/zgl_main.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="665"/>
+        <CursorPos X="31" Y="682"/>
+        <UsageCount Value="19"/>
+      </Unit20>
+      <Unit21>
+        <Filename Value="../../Zengl_SRC/demos/Lazarus/05 - Primitives/demo05.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="50"/>
+        <UsageCount Value="8"/>
+      </Unit21>
+      <Unit22>
+        <Filename Value="../../Zengl_SRC/src/zgl_screen.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="516"/>
+        <CursorPos X="51" Y="535"/>
+        <UsageCount Value="8"/>
+      </Unit22>
+      <Unit23>
+        <Filename Value="../../Zengl_SRC/src/zgl_application.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="247"/>
+        <CursorPos Y="271"/>
+        <UsageCount Value="13"/>
+      </Unit23>
+      <Unit24>
+        <Filename Value="../../Zengl_SRC/src/zgl_window.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="9"/>
+        <CursorPos X="43" Y="31"/>
+        <UsageCount Value="13"/>
+      </Unit24>
+      <Unit25>
+        <Filename Value="../../Zengl_SRC/src/zgl_render.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="53"/>
+        <CursorPos X="18" Y="72"/>
+        <UsageCount Value="8"/>
+      </Unit25>
+      <Unit26>
+        <Filename Value="../../Zengl_SRC/src/zgl_opengl.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="39"/>
+        <CursorPos X="92" Y="43"/>
+        <UsageCount Value="8"/>
+      </Unit26>
+      <Unit27>
+        <Filename Value="../../Zengl_SRC/src/zgl_opengl_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="353"/>
+        <CursorPos X="3" Y="378"/>
+        <UsageCount Value="17"/>
+      </Unit27>
+      <Unit28>
+        <Filename Value="../../Zengl_SRC/src/zgl_keyboard.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="126"/>
+        <CursorPos X="3" Y="164"/>
+        <UsageCount Value="8"/>
+      </Unit28>
+      <Unit29>
+        <Filename Value="../../Zengl_SRC/demos/Lazarus/08 - Sprite Engine/demo08.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="28"/>
+        <CursorPos X="69" Y="39"/>
+        <UsageCount Value="20"/>
+      </Unit29>
+      <Unit30>
+        <Filename Value="../../Zengl_SRC/src/zgl_text.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="249"/>
+        <CursorPos X="3" Y="262"/>
+        <UsageCount Value="17"/>
+      </Unit30>
+      <Unit31>
+        <Filename Value="../../Zengl_SRC/src/zgl_font.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="155"/>
+        <CursorPos X="17" Y="167"/>
+        <UsageCount Value="20"/>
+      </Unit31>
+      <Unit32>
+        <Filename Value="../../Zengl_SRC/src/zgl_file.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="60"/>
+        <CursorPos X="11" Y="78"/>
+        <UsageCount Value="16"/>
+      </Unit32>
+      <Unit33>
+        <Filename Value="../../Zengl_SRC/src/zgl_log.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="85"/>
+        <CursorPos X="46" Y="95"/>
+        <UsageCount Value="7"/>
+      </Unit33>
+      <Unit34>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/rtl/unix/bunxovlh.inc"/>
+        <EditorIndex Value="-1"/>
+        <CursorPos X="11" Y="38"/>
+        <UsageCount Value="12"/>
+      </Unit34>
+      <Unit35>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/rtl/unix/bunxovl.inc"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="149"/>
+        <CursorPos X="3" Y="153"/>
+        <UsageCount Value="12"/>
+      </Unit35>
+      <Unit36>
+        <Filename Value="../../Zengl_SRC/src/zgl_memory.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="93"/>
+        <CursorPos Y="125"/>
+        <UsageCount Value="15"/>
+      </Unit36>
+      <Unit37>
+        <Filename Value="../../Lib/dglOpenGL.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="11581"/>
+        <CursorPos X="21" Y="11613"/>
+        <UsageCount Value="10"/>
+      </Unit37>
+      <Unit38>
+        <Filename Value="../../Zengl_SRC/src/zgl_utils.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="175"/>
+        <CursorPos Y="198"/>
+        <UsageCount Value="17"/>
+      </Unit38>
+      <Unit39>
+        <Filename Value="../../Zengl_SRC/src/zgl_opengles_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="299"/>
+        <CursorPos X="48" Y="324"/>
+        <UsageCount Value="16"/>
+      </Unit39>
+      <Unit40>
+        <Filename Value="../../Zengl_SRC/src/zgl_primitives_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="186"/>
+        <UsageCount Value="16"/>
+      </Unit40>
+      <Unit41>
+        <Filename Value="/usr/share/fpcsrc/3.0.4/packages/opengles/src/gles20.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1704"/>
+        <CursorPos X="12" Y="1100"/>
+        <UsageCount Value="9"/>
+      </Unit41>
+      <Unit42>
+        <Filename Value="../../Zengl_SRC/src/zgl_timers.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="185"/>
+        <CursorPos X="26" Y="240"/>
+        <UsageCount Value="13"/>
+      </Unit42>
+    </Units>
+    <JumpHistory Count="30" HistoryIndex="29">
+      <Position1>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position1>
+      <Position2>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position2>
+      <Position3>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position3>
+      <Position4>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position4>
+      <Position5>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position5>
+      <Position6>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position6>
+      <Position7>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position7>
+      <Position8>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position8>
+      <Position9>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position9>
+      <Position10>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position10>
+      <Position11>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position11>
+      <Position12>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position12>
+      <Position13>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position13>
+      <Position14>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position14>
+      <Position15>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position15>
+      <Position16>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position16>
+      <Position17>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position17>
+      <Position18>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position18>
+      <Position19>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position19>
+      <Position20>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position20>
+      <Position21>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position21>
+      <Position22>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position22>
+      <Position23>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position23>
+      <Position24>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position24>
+      <Position25>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position25>
+      <Position26>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position26>
+      <Position27>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="113" TopLine="82"/>
+      </Position27>
+      <Position28>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="115" TopLine="82"/>
+      </Position28>
+      <Position29>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="121" TopLine="82"/>
+      </Position29>
+      <Position30>
+        <Filename Value="ZenTest001.lpr"/>
+        <Caret Line="117" Column="8" TopLine="82"/>
+      </Position30>
+    </JumpHistory>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes Count="0" ActiveMode=""/>
+    </RunParams>
+  </ProjectSession>
+  <Debugging>
+    <BreakPoints Count="1">
+      <Item1>
+        <Kind Value="bpkSource"/>
+        <WatchScope Value="wpsLocal"/>
+        <WatchKind Value="wpkWrite"/>
+        <Source Value="ZenTest001.lpr"/>
+        <Line Value="117"/>
+      </Item1>
+    </BreakPoints>
+  </Debugging>
+</CONFIG>

BIN
00001-test/data/font-page0.png


BIN
00001-test/data/font.zfi


+ 535 - 0
00001-test/jni.pas

@@ -0,0 +1,535 @@
+unit jni;
+{$ifdef fpc}
+ {$mode delphi}
+ {$packrecords c}
+{$endif}
+
+interface
+
+(*
+ * Manifest constants.
+ *)
+const
+  JNI_FALSE = 0;
+  JNI_TRUE = 1;
+
+  JNI_VERSION_1_1 = $00010001;
+  JNI_VERSION_1_2 = $00010002;
+  JNI_VERSION_1_4 = $00010004;
+  JNI_VERSION_1_6 = $00010006;
+
+  JNI_OK = 0;           // no error
+  JNI_ERR = - 1;        // generic error
+  JNI_EDETACHED = - 2;  // thread detached from the VM
+  JNI_EVERSION = - 3;   // JNI version error
+
+  JNI_COMMIT = 1;       // copy content, do not free buffer
+  JNI_ABORT = 2;        // free buffer w/o copying back
+
+(*
+ * Type definitions.
+ *)
+type
+  va_list = pointer;
+
+  jboolean = byte;        // unsigned 8 bits
+  jbyte = shortint;       // signed 8 bits
+  jchar = word;           // unsigned 16 bits
+  jshort = smallint;      // signed 16 bits
+  jint = longint;         // signed 32 bits
+  jlong = int64;          // signed 64 bits
+  jfloat = single;        // 32-bit IEEE 754
+  jdouble = double;       // 64-bit IEEE 754
+
+  jsize = jint;            // "cardinal indices and sizes"
+
+  Pjboolean = ^jboolean;
+  Pjbyte = ^jbyte;
+  Pjchar = ^jchar;
+  Pjshort = ^jshort;
+  Pjint = ^jint;
+  Pjlong = ^jlong;
+  Pjfloat = ^jfloat;
+  Pjdouble = ^jdouble;
+
+  Pjsize = ^jsize;
+
+     // Reference type
+  jobject = pointer;
+  jclass = jobject;
+  jstring = jobject;
+  jarray = jobject;
+  jobjectArray = jarray;
+  jbooleanArray = jarray;
+  jbyteArray = jarray;
+  jcharArray = jarray;
+  jshortArray = jarray;
+  jintArray = jarray;
+  jlongArray = jarray;
+  jfloatArray = jarray;
+  jdoubleArray = jarray;
+  jthrowable = jobject;
+  jweak = jobject;
+  jref = jobject;
+
+  PPointer = ^pointer;
+  Pjobject = ^jobject;
+  Pjclass = ^jclass;
+  Pjstring = ^jstring;
+  Pjarray = ^jarray;
+  PjobjectArray = ^jobjectArray;
+  PjbooleanArray = ^jbooleanArray;
+  PjbyteArray = ^jbyteArray;
+  PjcharArray = ^jcharArray;
+  PjshortArray = ^jshortArray;
+  PjintArray = ^jintArray;
+  PjlongArray = ^jlongArray;
+  PjfloatArray = ^jfloatArray;
+  PjdoubleArray = ^jdoubleArray;
+  Pjthrowable = ^jthrowable;
+  Pjweak = ^jweak;
+  Pjref = ^jref;
+
+  _jfieldID = record // opaque structure
+  end;
+  jfieldID = ^_jfieldID;// field IDs
+  PjfieldID = ^jfieldID;
+
+  _jmethodID = record // opaque structure
+  end;
+  jmethodID = ^_jmethodID;// method IDs
+  PjmethodID = ^jmethodID;
+
+  PJNIInvokeInterface = ^JNIInvokeInterface;
+
+  Pjvalue = ^jvalue;
+  jvalue = {$ifdef packedrecords} packed{$endif} record
+    case integer of
+       0: (z: jboolean);
+       1: (b: jbyte);
+       2: (c: jchar);
+       3: (s: jshort);
+       4: (i: jint);
+       5: (j: jlong);
+       6: (f: jfloat);
+       7: (d: jdouble);
+       8: (l: jobject);
+    end;
+
+  jobjectRefType = (JNIInvalidRefType = 0, JNILocalRefType = 1, JNIGlobalRefType = 2, JNIWeakGlobalRefType = 3);
+
+  PJNINativeMethod = ^JNINativeMethod;
+  JNINativeMethod = {$ifdef packedrecords} packed{$endif} record
+    name: pchar;
+    signature: pchar;
+    fnPtr: pointer;
+  end;
+
+  PJNINativeInterface = ^JNINativeInterface;
+
+  _JNIEnv = {$ifdef packedrecords} packed{$endif} record
+    functions: PJNINativeInterface;
+  end;
+
+  _JavaVM = {$ifdef packedrecords} packed{$endif} record
+    functions:PJNIInvokeInterface;
+  end;
+
+  C_JNIEnv = ^JNINativeInterface;
+  JNIEnv = ^JNINativeInterface;
+  JavaVM = ^JNIInvokeInterface;
+
+  PPJNIEnv = ^PJNIEnv;
+  PJNIEnv = ^JNIEnv;
+
+  PPJavaVM = ^PJavaVM;
+  PJavaVM = ^JavaVM;
+
+  JNINativeInterface = {$ifdef packedrecords} packed{$endif} record
+  reserved0: pointer;
+  reserved1: pointer;
+  reserved2: pointer;
+  reserved3: pointer;
+
+  GetVersion: function(Env: PJNIEnv): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  DefineClass: function(Env: PJNIEnv; const Name: pchar; Loader: JObject; const Buf: PJByte; Len: JSize): JClass; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  FindClass: function(Env: PJNIEnv; const Name: pchar): JClass; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // Reflection Support
+  FromReflectedMethod: function(Env: PJNIEnv; Method: JObject): JMethodID; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  FromReflectedField: function(Env: PJNIEnv; Field: JObject): JFieldID; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ToReflectedMethod: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; IsStatic: JBoolean): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetSuperclass: function(Env: PJNIEnv; Sub: JClass): JClass; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  IsAssignableFrom: function(Env: PJNIEnv; Sub: JClass; Sup: JClass): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // Reflection Support
+  ToReflectedField: function(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID; IsStatic: JBoolean): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  Throw: function(Env: PJNIEnv; Obj: JThrowable): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ThrowNew: function(Env: PJNIEnv; AClass: JClass; const Msg: pchar): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ExceptionOccurred: function(Env: PJNIEnv): JThrowable; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ExceptionDescribe: procedure(Env: PJNIEnv); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ExceptionClear: procedure(Env: PJNIEnv); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  FatalError: procedure(Env: PJNIEnv; const Msg: pchar); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // Local Reference Management
+  PushLocalFrame: function(Env: PJNIEnv; Capacity: JInt): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  PopLocalFrame: function(Env: PJNIEnv; Result: JObject): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  NewGlobalRef: function(Env: PJNIEnv; LObj: JObject): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  DeleteGlobalRef: procedure(Env: PJNIEnv; GRef: JObject); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  DeleteLocalRef: procedure(Env: PJNIEnv; Obj: JObject); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  IsSameObject: function(Env: PJNIEnv; Obj1: JObject; Obj2: JObject): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // Local Reference Management
+  NewLocalRef: function(Env: PJNIEnv; Ref: JObject): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  EnsureLocalCapacity: function(Env: PJNIEnv; Capacity: JInt): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  AllocObject: function(Env: PJNIEnv; AClass: JClass): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  NewObject: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  NewObjectV: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  NewObjectA: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetObjectClass: function(Env: PJNIEnv; Obj: JObject): JClass; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  IsInstanceOf: function(Env: PJNIEnv; Obj: JObject; AClass: JClass): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetMethodID: function(Env: PJNIEnv; AClass: JClass; const Name: pchar; const Sig: pchar): JMethodID; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallObjectMethod: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallObjectMethodV: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: va_list): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallObjectMethodA: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallBooleanMethod: function(Env: PJNIEnv; Obj: JObject;MethodID:JMethodID): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallBooleanMethodV: function(Env: PJNIEnv; Obj: JObject;MethodID:JMethodID; Args: va_list): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallBooleanMethodA: function(Env: PJNIEnv; Obj: JObject;MethodID:JMethodID; Args: PJValue): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallByteMethod: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallByteMethodV: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: va_list): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallByteMethodA: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: PJValue): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallCharMethod: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallCharMethodV: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: va_list): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallCharMethodA: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: PJValue): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallShortMethod: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallShortMethodV: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: va_list): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallShortMethodA: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: PJValue): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallIntMethod: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallIntMethodV: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: va_list): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallIntMethodA: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: PJValue): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallLongMethod: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallLongMethodV: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: va_list): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallLongMethodA: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: PJValue): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallFloatMethod: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallFloatMethodV: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: va_list): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallFloatMethodA: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: PJValue): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallDoubleMethod: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallDoubleMethodV: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: va_list): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallDoubleMethodA: function(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: PJValue): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallVoidMethod: procedure(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallVoidMethodV: procedure(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: va_list); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallVoidMethodA: procedure(Env: PJNIEnv;Obj: JObject;MethodID:JMethodID; Args: PJValue); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallNonvirtualObjectMethod: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualObjectMethodV: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: va_list): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualObjectMethodA: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallNonvirtualBooleanMethod: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualBooleanMethodV: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: va_list): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualBooleanMethodA: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallNonvirtualByteMethod: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualByteMethodV: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: va_list): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualByteMethodA: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallNonvirtualCharMethod: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualCharMethodV: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: va_list): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualCharMethodA: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallNonvirtualShortMethod: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualShortMethodV: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: va_list): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualShortMethodA: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallNonvirtualIntMethod: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualIntMethodV: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: va_list): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualIntMethodA: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallNonvirtualLongMethod: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualLongMethodV: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: va_list): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualLongMethodA: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallNonvirtualFloatMethod: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualFloatMethodV: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: va_list): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualFloatMethodA: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallNonvirtualDoubleMethod: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualDoubleMethodV: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: va_list): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualDoubleMethodA: function(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallNonvirtualVoidMethod: procedure(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualVoidMethodV: procedure(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: va_list); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallNonvirtualVoidMethodA: procedure(Env: PJNIEnv;Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetFieldID: function(Env: PJNIEnv; AClass: JClass; const Name: pchar; const Sig: pchar):JFieldID; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetObjectField: function(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetBooleanField: function(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetByteField: function(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetCharField: function(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetShortField: function(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetIntField: function(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetLongField: function(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetFloatField: function(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetDoubleField: function(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  SetObjectField: procedure(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID; Val: JObject); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetBooleanField: procedure(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID; Val: JBoolean); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetByteField: procedure(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID; Val: JByte); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetCharField: procedure(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID; Val: JChar); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetShortField: procedure(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID; Val: JShort); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetIntField: procedure(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID; Val: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetLongField: procedure(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID; Val: JLong); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetFloatField: procedure(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID; Val: JFloat); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetDoubleField: procedure(Env: PJNIEnv;Obj: JObject; FieldID: JFieldID; Val: JDouble); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetStaticMethodID: function(Env: PJNIEnv; AClass: JClass; const Name: pchar; const Sig: pchar):JMethodID; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallStaticObjectMethod: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticObjectMethodV: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticObjectMethodA: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallStaticBooleanMethod: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticBooleanMethodV: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticBooleanMethodA: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallStaticByteMethod: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticByteMethodV: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticByteMethodA: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallStaticCharMethod: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticCharMethodV: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticCharMethodA: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallStaticShortMethod: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticShortMethodV: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticShortMethodA: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallStaticIntMethod: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticIntMethodV: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticIntMethodA: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallStaticLongMethod: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticLongMethodV: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticLongMethodA: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallStaticFloatMethod: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticFloatMethodV: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticFloatMethodA: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallStaticDoubleMethod: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticDoubleMethodV: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticDoubleMethodA: function(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  CallStaticVoidMethod: procedure(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticVoidMethodV: procedure(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: va_list); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  CallStaticVoidMethodA: procedure(Env: PJNIEnv; AClass: JClass; MethodID: JMethodID; Args: PJValue); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetStaticFieldID: function(Env: PJNIEnv; AClass: JClass; const Name: pchar; const Sig: pchar):JFieldID; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStaticObjectField: function(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStaticBooleanField: function(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStaticByteField: function(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID): JByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStaticCharField: function(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID): JChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStaticShortField: function(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID): JShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStaticIntField: function(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStaticLongField: function(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStaticFloatField: function(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID): JFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStaticDoubleField: function(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID): JDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  SetStaticObjectField: procedure(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID; Val: JObject); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetStaticBooleanField: procedure(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID; Val: JBoolean); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetStaticByteField: procedure(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID; Val: JByte); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetStaticCharField: procedure(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID; Val: JChar); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetStaticShortField: procedure(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID; Val: JShort); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetStaticIntField: procedure(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID; Val: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetStaticLongField: procedure(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID; Val: JLong); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetStaticFloatField: procedure(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID; Val: JFloat); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetStaticDoubleField: procedure(Env: PJNIEnv; AClass: JClass; FieldID: JFieldID; Val: JDouble); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  NewString: function(Env: PJNIEnv; const Unicode: PJChar; Len: JSize): JString; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStringLength: function(Env: PJNIEnv; Str: JString): JSize; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStringChars: function(Env: PJNIEnv; Str: JString; var IsCopy: JBoolean): PJChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleaseStringChars: procedure(Env: PJNIEnv; Str: JString; const Chars: PJChar); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  NewStringUTF: function(Env: PJNIEnv; const UTF: pchar): JString; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStringUTFLength: function(Env: PJNIEnv; Str: JString): JSize; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStringUTFChars: function(Env: PJNIEnv; Str: JString; IsCopy: PJBoolean): pchar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleaseStringUTFChars: procedure(Env: PJNIEnv; Str: JString; const Chars: pchar); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetArrayLength: function(Env: PJNIEnv; AArray:JArray): JSize; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  NewObjectArray: function(Env: PJNIEnv; Len: JSize; AClass: JClass; Init: JObject): JObjectArray; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetObjectArrayElement: function(Env: PJNIEnv; AArray: JObjectArray; Index: JSize): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetObjectArrayElement: procedure(Env: PJNIEnv; AArray: JObjectArray; Index: JSize; Val: JObject); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  NewBooleanArray: function(Env: PJNIEnv; Len: JSize): JBooleanArray; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  NewByteArray: function(Env: PJNIEnv; Len: JSize): JByteArray; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  NewCharArray: function(Env: PJNIEnv; Len: JSize): JCharArray; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  NewShortArray: function(Env: PJNIEnv; Len: JSize): JShortArray; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  NewIntArray: function(Env: PJNIEnv; Len: JSize): JIntArray; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  NewLongArray: function(Env: PJNIEnv; Len: JSize): JLongArray; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  NewFloatArray: function(Env: PJNIEnv; Len: JSize): JFloatArray; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  NewDoubleArray: function(Env: PJNIEnv; Len: JSize): JDoubleArray; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetBooleanArrayElements: function(Env: PJNIEnv; AArray: JBooleanArray; var IsCopy: JBoolean): PJBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetByteArrayElements: function(Env: PJNIEnv; AArray: JByteArray; var IsCopy: JBoolean): PJByte; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetCharArrayElements: function(Env: PJNIEnv; AArray: JCharArray; var IsCopy: JBoolean): PJChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetShortArrayElements: function(Env: PJNIEnv; AArray: JShortArray; var IsCopy: JBoolean): PJShort; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetIntArrayElements: function(Env: PJNIEnv; AArray: JIntArray; var IsCopy: JBoolean): PJInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetLongArrayElements: function(Env: PJNIEnv; AArray: JLongArray; var IsCopy: JBoolean): PJLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetFloatArrayElements: function(Env: PJNIEnv; AArray: JFloatArray; var IsCopy: JBoolean): PJFloat; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetDoubleArrayElements: function(Env: PJNIEnv; AArray: JDoubleArray; var IsCopy: JBoolean): PJDouble; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  ReleaseBooleanArrayElements: procedure(Env: PJNIEnv; AArray: JBooleanArray;Elems: PJBoolean; Mode: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleaseByteArrayElements: procedure(Env: PJNIEnv; AArray: JByteArray;Elems: PJByte; Mode: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleaseCharArrayElements: procedure(Env: PJNIEnv; AArray: JCharArray;Elems: PJChar; Mode: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleaseShortArrayElements: procedure(Env: PJNIEnv; AArray: JShortArray;Elems: PJShort; Mode: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleaseIntArrayElements: procedure(Env: PJNIEnv; AArray: JIntArray;Elems: PJInt; Mode: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleaseLongArrayElements: procedure(Env: PJNIEnv; AArray: JLongArray;Elems: PJLong; Mode: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleaseFloatArrayElements: procedure(Env: PJNIEnv; AArray: JFloatArray;Elems: PJFloat; Mode: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleaseDoubleArrayElements: procedure(Env: PJNIEnv; AArray: JDoubleArray;Elems: PJDouble; Mode: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetBooleanArrayRegion: procedure(Env: PJNIEnv; AArray: JBooleanArray; Start: JSize; Len: JSize; Buf: PJBoolean); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetByteArrayRegion: procedure(Env: PJNIEnv; AArray: JByteArray; Start: JSize; Len: JSize; Buf: PJByte); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetCharArrayRegion: procedure(Env: PJNIEnv; AArray: JCharArray; Start: JSize; Len: JSize; Buf: PJChar); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetShortArrayRegion: procedure(Env: PJNIEnv; AArray: JShortArray; Start: JSize; Len: JSize; Buf: PJShort); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetIntArrayRegion: procedure(Env: PJNIEnv; AArray: JIntArray; Start: JSize; Len: JSize; Buf: PJInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetLongArrayRegion: procedure(Env: PJNIEnv; AArray: JLongArray; Start: JSize; Len: JSize; Buf: PJLong); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetFloatArrayRegion: procedure(Env: PJNIEnv; AArray: JFloatArray; Start: JSize; Len: JSize; Buf: PJFloat); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetDoubleArrayRegion: procedure(Env: PJNIEnv; AArray: JDoubleArray; Start: JSize; Len: JSize; Buf: PJDouble); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  SetBooleanArrayRegion: procedure(Env: PJNIEnv; AArray: JBooleanArray; Start: JSize; Len: JSize; Buf: PJBoolean); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetByteArrayRegion: procedure(Env: PJNIEnv; AArray: JByteArray; Start: JSize; Len: JSize; Buf: PJByte); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetCharArrayRegion: procedure(Env: PJNIEnv; AArray: JCharArray; Start: JSize; Len: JSize; Buf: PJChar); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetShortArrayRegion: procedure(Env: PJNIEnv; AArray: JShortArray; Start: JSize; Len: JSize; Buf: PJShort); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetIntArrayRegion: procedure(Env: PJNIEnv; AArray: JIntArray; Start: JSize; Len: JSize; Buf: PJInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetLongArrayRegion: procedure(Env: PJNIEnv; AArray: JLongArray; Start: JSize; Len: JSize; Buf: PJLong); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetFloatArrayRegion: procedure(Env: PJNIEnv; AArray: JFloatArray; Start: JSize; Len: JSize; Buf: PJFloat); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  SetDoubleArrayRegion: procedure(Env: PJNIEnv; AArray: JDoubleArray; Start: JSize; Len: JSize; Buf: PJDouble); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  RegisterNatives: function(Env: PJNIEnv; AClass: JClass; const Methods: PJNINativeMethod; NMethods: JInt): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  UnregisterNatives: function(Env: PJNIEnv; AClass: JClass): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  MonitorEnter: function(Env: PJNIEnv;Obj: JObject): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  MonitorExit: function(Env: PJNIEnv;Obj: JObject): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  GetJavaVM: function(Env: PJNIEnv; var VM: JavaVM): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // String Operations
+  GetStringRegion: procedure(Env: PJNIEnv; Str: JString; Start: JSize; Len: JSize; Buf: PJChar); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetStringUTFRegion: procedure(Env: PJNIEnv; Str: JString; Start: JSize; Len: JSize; Buf: pchar); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // Array Operations
+  GetPrimitiveArrayCritical: function(Env: PJNIEnv; AArray: JArray; var IsCopy: JBoolean): pointer; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleasePrimitiveArrayCritical: procedure(Env: PJNIEnv; AArray: JArray; CArray: pointer; Mode: JInt); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // String Operations
+  GetStringCritical: function(Env: PJNIEnv; Str: JString; var IsCopy: JBoolean): PJChar; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  ReleaseStringCritical: procedure(Env: PJNIEnv; Str: JString; CString: PJChar); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // Weak Global References
+  NewWeakGlobalRef: function(Env: PJNIEnv; Obj: JObject): JWeak; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  DeleteWeakGlobalRef: procedure(Env: PJNIEnv; Ref: JWeak); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // Exceptions
+  ExceptionCheck: function(Env: PJNIEnv): JBoolean; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // J2SDK1_4
+  NewDirectByteBuffer: function(Env: PJNIEnv; Address: pointer; Capacity: JLong): JObject; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetDirectBufferAddress: function(Env: PJNIEnv; Buf: JObject): pointer; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetDirectBufferCapacity: function(Env: PJNIEnv; Buf: JObject): JLong; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+
+  // added in JNI 1.6
+  GetObjectRefType: function(Env: PJNIEnv; AObject: JObject): JObjectRefType; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+     end;
+
+  JNIInvokeInterface = {$ifdef packedrecords} packed{$endif} record
+  reserved0: pointer;
+  reserved1: pointer;
+  reserved2: pointer;
+
+  DestroyJavaVM: function(PVM: PJavaVM): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  AttachCurrentThread: function(PVM: PJavaVM; PEnv: PJNIEnv; Args: pointer): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  DetachCurrentThread: function(PVM: PJavaVM): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  GetEnv: function(PVM: PJavaVM; PEnv: Ppointer; Version: JInt): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+  AttachCurrentThreadAsDaemon: function(PVM: PJavaVM; PEnv: PJNIEnv; Args: pointer): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+     end;
+
+  JavaVMAttachArgs = {$ifdef packedrecords} packed{$endif} record
+  version: JInt;  // must be >= JNI_VERSION_1_2
+  name: pchar;    // NULL or name of thread as modified UTF-8 str
+  group: JObject; // global ref of a ThreadGroup object, or NULL
+     end;
+
+(**
+ * JNI 1.2+ initialization.  (As of 1.6, the pre-1.2 structures are no
+ * longer supported.)
+ *)
+
+  PJavaVMOption = ^JavaVMOption;
+  JavaVMOption = {$ifdef packedrecords} packed{$endif} record
+    optionString: pchar;
+    extraInfo: pointer;
+  end;
+
+  JavaVMInitArgs = {$ifdef packedrecords} packed{$endif} record
+    version: JInt; // use JNI_VERSION_1_2 or later
+    nOptions: JInt;
+    options: PJavaVMOption;
+    ignoreUnrecognized: PJBoolean;
+  end;
+
+(*
+ * VM initialization functions.
+ *
+ * Note these are the only symbols exported for JNI by the VM.
+ *)
+{$ifdef jniexternals}
+function JNI_GetDefaultJavaVMInitArgs(p: pointer): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}external 'jni' name 'JNI_GetDefaultJavaVMInitArgs';
+function JNI_CreateJavaVM(vm:PPJavaVM; AEnv: PJNIEnv; p: pointer): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}external 'jni' name 'JNI_CreateJavaVM';
+function JNI_GetCreatedJavaVMs(vm: PPJavaVM; ASize: JSize; p: Pjsize): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}external 'jni' name 'JNI_GetCreatedJavaVMs';
+{$endif}
+
+(*
+ * Prototypes for functions exported by loadable shared libs.  These are
+ * called by JNI, not provided by JNI.
+ *)
+
+const
+  curVM: PJavaVM = nil;
+  curEnv: PJNIEnv = nil;
+
+(*
+function JNI_OnLoad(vm: PJavaVM;reserved: pointer): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+procedure JNI_OnUnload(vm: PJavaVM;reserved: pointer); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+*)
+implementation
+
+function JNI_OnLoad(vm: PJavaVM; reserved: pointer): JInt; {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+begin
+  curVM := vm;
+  result := JNI_VERSION_1_6;
+end;
+
+procedure JNI_OnUnload(vm: PJavaVM; reserved: pointer); {$ifdef mswindows} stdcall; {$else} cdecl; {$endif}
+begin
+end;
+
+end.
+
+

BIN
00001-test/lib/arm-android/jni.o


BIN
00001-test/lib/arm-android/jni.ppu


+ 5 - 0
00001-test/lib/arm-android/test.compiled

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <Compiler Value="/usr/local/codetyphon/fpc/fpc32/bin/i386-linux/ppcrossarm" Date="1587012487"/>
+  <Params Value=" -Tandroid -Parm -MObjFPC -Scghi -O1 -l -vewnhibq -Fi/home/mirrel/Programming/Lazarus/projects/00001-test/lib/arm-android -Fl/usr/local/codetyphon/binLibraries/android-4.0-api14-arm -Fu/home/mirrel/Programming/Lazarus/projects/00001-test/ -FU/home/mirrel/Programming/Lazarus/projects/00001-test/lib/arm-android/ -FE/home/mirrel/Programming/Lazarus/projects/00001-test/ -o/home/mirrel/Programming/Lazarus/projects/00001-test/libtest.so test.ppr"/>
+</CONFIG>

BIN
00001-test/lib/arm-android/test.o


+ 6 - 0
00001-test/lib/arm-linux/ZenTest001.compiled

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <Compiler Value="/usr/local/codetyphon/fpc/fpc64/bin/x86_64-linux/fpc" Date="1587014402"/>
+  <Params Value=" -Parm -MObjFPC -Scghi -CX -Os1 -g -gl -Xg -Xs -XX -l -vewnhibq -Fi/home/mirrel/Programming/Lazarus/projects/00001-test/lib/arm-linux -Fi/home/mirrel/Programming/Lazarus/Zengl_SRC/headers -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/src -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/lib/zlib/x86_64-linux -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/lib/zip/x86_64-linux -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/lib/theora/x86_64-linux -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/lib/ogg/x86_64-linux -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/lib/jpeg/x86_64-linux -Fu/home/mirrel/Programming/Lazarus/Lib -Fu/home/mirrel/Programming/Lazarus/projects/00001-test/ -FU/home/mirrel/Programming/Lazarus/projects/00001-test/lib/arm-linux/ -FE/home/mirrel/Programming/Lazarus/projects/00001-test/ -o/home/mirrel/Programming/Lazarus/projects/00001-test/ZenTest001 ZenTest001.lpr"/>
+  <Complete Value="False"/>
+</CONFIG>

BIN
00001-test/lib/arm-linux/jni.o


BIN
00001-test/lib/arm-linux/jni.ppu


+ 6 - 0
00001-test/lib/arm-linux/test.compiled

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <Compiler Value="/usr/local/codetyphon/fpc/fpc32/bin/i386-linux/ppcrossarm" Date="1587012487"/>
+  <Params Value=" -Tlinux -Parm -MObjFPC -Scghi -O1 -l -vewnhibq -Fi/home/mirrel/Programming/Lazarus/projects/00001-test/lib/arm-linux -Fl/usr/local/codetyphon/binLibraries/android-4.0-api14-arm -Fu/home/mirrel/Programming/Lazarus/projects/00001-test/ -FU/home/mirrel/Programming/Lazarus/projects/00001-test/lib/arm-linux/ -FE/home/mirrel/Programming/Lazarus/projects/00001-test/ -o/home/mirrel/Programming/Lazarus/projects/00001-test/libtest.so test.ppr"/>
+  <Complete Value="False"/>
+</CONFIG>

BIN
00001-test/lib/arm-linux/test.o


+ 5 - 0
00001-test/lib/x86_64-linux/ZenTest001.compiled

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <Compiler Value="/usr/bin/fpc" Date="1548372422"/>
+  <Params Value=" -MObjFPC -Scghi -CX -Cg -Os1 -g -gl -Xg -Xs -XX -l -vewnhibq -Fi/home/mirrel/Programming/Lazarus/projects/00001-test/lib/x86_64-linux -Fi/home/mirrel/Programming/Lazarus/Zengl_SRC/headers -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/src -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/lib/zlib/x86_64-linux -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/lib/zip/x86_64-linux -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/lib/theora/x86_64-linux -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/lib/ogg/x86_64-linux -Fu/home/mirrel/Programming/Lazarus/Zengl_SRC/lib/jpeg/x86_64-linux -Fu/home/mirrel/Programming/Lazarus/Lib -Fu/home/mirrel/Programming/Lazarus/projects/00001-test/ -FU/home/mirrel/Programming/Lazarus/projects/00001-test/lib/x86_64-linux/ -FE/home/mirrel/Programming/Lazarus/projects/00001-test/ -o/home/mirrel/Programming/Lazarus/projects/00001-test/ZenTest001 ZenTest001.lpr"/>
+</CONFIG>

BIN
00001-test/lib/x86_64-linux/ZenTest001.o


BIN
00001-test/lib/x86_64-linux/dglOpenGL.o


BIN
00001-test/lib/x86_64-linux/dglOpenGL.ppu


BIN
00001-test/lib/x86_64-linux/zgl_application.o


BIN
00001-test/lib/x86_64-linux/zgl_application.ppu


BIN
00001-test/lib/x86_64-linux/zgl_camera_2d.o


BIN
00001-test/lib/x86_64-linux/zgl_camera_2d.ppu


BIN
00001-test/lib/x86_64-linux/zgl_file.o


BIN
00001-test/lib/x86_64-linux/zgl_file.ppu


BIN
00001-test/lib/x86_64-linux/zgl_font.o


BIN
00001-test/lib/x86_64-linux/zgl_font.ppu


BIN
00001-test/lib/x86_64-linux/zgl_fx.o


BIN
00001-test/lib/x86_64-linux/zgl_fx.ppu


BIN
00001-test/lib/x86_64-linux/zgl_joystick.o


BIN
00001-test/lib/x86_64-linux/zgl_joystick.ppu


BIN
00001-test/lib/x86_64-linux/zgl_keyboard.o


BIN
00001-test/lib/x86_64-linux/zgl_keyboard.ppu


BIN
00001-test/lib/x86_64-linux/zgl_lib_ogg.o


BIN
00001-test/lib/x86_64-linux/zgl_lib_ogg.ppu


BIN
00001-test/lib/x86_64-linux/zgl_lib_theora.o


BIN
00001-test/lib/x86_64-linux/zgl_lib_theora.ppu


BIN
00001-test/lib/x86_64-linux/zgl_lib_zip.o


BIN
00001-test/lib/x86_64-linux/zgl_lib_zip.ppu


BIN
00001-test/lib/x86_64-linux/zgl_log.o


BIN
00001-test/lib/x86_64-linux/zgl_log.ppu


BIN
00001-test/lib/x86_64-linux/zgl_main.o


BIN
00001-test/lib/x86_64-linux/zgl_main.ppu


BIN
00001-test/lib/x86_64-linux/zgl_math_2d.o


BIN
00001-test/lib/x86_64-linux/zgl_math_2d.ppu


BIN
00001-test/lib/x86_64-linux/zgl_memory.o


BIN
00001-test/lib/x86_64-linux/zgl_memory.ppu


BIN
00001-test/lib/x86_64-linux/zgl_mouse.o


BIN
00001-test/lib/x86_64-linux/zgl_mouse.ppu


BIN
00001-test/lib/x86_64-linux/zgl_opengl.o


BIN
00001-test/lib/x86_64-linux/zgl_opengl.ppu


BIN
00001-test/lib/x86_64-linux/zgl_opengl_all.o


BIN
00001-test/lib/x86_64-linux/zgl_opengl_all.ppu


BIN
00001-test/lib/x86_64-linux/zgl_particles_2d.o


BIN
00001-test/lib/x86_64-linux/zgl_particles_2d.ppu


BIN
00001-test/lib/x86_64-linux/zgl_primitives_2d.o


BIN
00001-test/lib/x86_64-linux/zgl_primitives_2d.ppu


BIN
00001-test/lib/x86_64-linux/zgl_render.o


BIN
00001-test/lib/x86_64-linux/zgl_render.ppu


BIN
00001-test/lib/x86_64-linux/zgl_render_2d.o


BIN
00001-test/lib/x86_64-linux/zgl_render_2d.ppu


BIN
00001-test/lib/x86_64-linux/zgl_render_target.o


BIN
00001-test/lib/x86_64-linux/zgl_render_target.ppu


BIN
00001-test/lib/x86_64-linux/zgl_resources.o


BIN
00001-test/lib/x86_64-linux/zgl_resources.ppu


BIN
00001-test/lib/x86_64-linux/zgl_screen.o


BIN
00001-test/lib/x86_64-linux/zgl_screen.ppu


BIN
00001-test/lib/x86_64-linux/zgl_sengine_2d.o


BIN
00001-test/lib/x86_64-linux/zgl_sengine_2d.ppu


BIN
00001-test/lib/x86_64-linux/zgl_sound.o


BIN
00001-test/lib/x86_64-linux/zgl_sound.ppu


BIN
00001-test/lib/x86_64-linux/zgl_sound_openal.o


BIN
00001-test/lib/x86_64-linux/zgl_sound_openal.ppu


BIN
00001-test/lib/x86_64-linux/zgl_sprite_2d.o


BIN
00001-test/lib/x86_64-linux/zgl_sprite_2d.ppu


BIN
00001-test/lib/x86_64-linux/zgl_text.o


BIN
00001-test/lib/x86_64-linux/zgl_text.ppu


BIN
00001-test/lib/x86_64-linux/zgl_textures.o


BIN
00001-test/lib/x86_64-linux/zgl_textures.ppu


BIN
00001-test/lib/x86_64-linux/zgl_textures_png.o


BIN
00001-test/lib/x86_64-linux/zgl_textures_png.ppu


BIN
00001-test/lib/x86_64-linux/zgl_threads.o


BIN
00001-test/lib/x86_64-linux/zgl_threads.ppu


BIN
00001-test/lib/x86_64-linux/zgl_timers.o


BIN
00001-test/lib/x86_64-linux/zgl_timers.ppu


BIN
00001-test/lib/x86_64-linux/zgl_types.o


BIN
00001-test/lib/x86_64-linux/zgl_types.ppu


BIN
00001-test/lib/x86_64-linux/zgl_utils.o


BIN
00001-test/lib/x86_64-linux/zgl_utils.ppu


BIN
00001-test/lib/x86_64-linux/zgl_video.o


BIN
00001-test/lib/x86_64-linux/zgl_video.ppu


BIN
00001-test/lib/x86_64-linux/zgl_window.o


BIN
00001-test/lib/x86_64-linux/zgl_window.ppu


BIN
00001-test/libtest.so


+ 25 - 0
00001-test/log.txt

@@ -0,0 +1,25 @@
+========================================
+=== ZenGL - test 0.3.14 (2020.02.29) ===
+========================================
+[00000001ms] Begin
+[00000390ms] XOpenIM - ok
+[00000391ms] XCreateIC - ok
+[00000391ms] Current mode: 1280 x 1024
+[00000391ms] GLX Extension - ok
+[00000391ms] glXChooseVisual: zDepth = 24; stencil = 8; fsaa = 8
+[00001121ms] GL_VERSION: 3.1 Mesa 18.3.6
+[00001121ms] GL_RENDERER: AMD TURKS (DRM 2.50.0 / 4.19.0-6-amd64, LLVM 7.0.1)
+[00001121ms] GL_MAX_TEXTURE_SIZE: 16384
+[00001121ms] GL_EXT_TEXTURE_COMPRESSION_S3TC: TRUE
+[00001121ms] GL_SGIS_GENERATE_MIPMAP: TRUE
+[00001121ms] GL_MAX_TEXTURE_UNITS_ARB: 8
+[00001121ms] GL_EXT_TEXTURE_FILTER_ANISOTROPIC: TRUE
+[00001121ms] GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 16
+[00001121ms] GL_EXT_BLEND_FUNC_SEPARATE: TRUE
+[00001121ms] GL_MAX_RENDERBUFFER_SIZE: 16384
+[00001121ms] GL_EXT_FRAMEBUFFER_OBJECT: TRUE
+[00001122ms] GLX_PBUFFER: TRUE
+[00001122ms] Support WaitVSync: TRUE
+[00001122ms] Ogg: Initialized
+[00001178ms] Theora: Initialized
+[00001215ms] Texture loaded: "data/font-page0.png"

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä