ããªãã®ãã±ããã«åãŸãããã€ã¹ã®ãã¹ãŠã®æ奜家ãšããã±ããã7ã€ã³ãããåºãæã£ãŠãã人ãæè¿ããŸããã¯ãã¹ãã©ãããã©ãŒã ã°ã©ãã£ãã¯ã¢ããªã±ãŒã·ã§ã³ãã€ãŸãã¢ãã€ã«ãã©ãããã©ãŒã ïŒAndroidã¹ããŒããã©ã³ãšã¿ãã¬ããïŒã§åäœããã¢ããªã±ãŒã·ã§ã³ã®ããã°ã©ãã³ã°ã®æè¡ãåãäžããŸãã Windowsã®å ŽåïŒãã¹ã¯ãããPCãã©ãããããããããããã¯ãã¿ãã¬ããïŒãã®å Žåãã¢ããªã±ãŒã·ã§ã³ã¯ã°ã©ãã£ã«ã«ã§ãããã°ã©ãã£ãã¯ã¯OpenGLïŒOGLïŒãšã¢ãã€ã«ããŒãžã§ã³ã®OpenGL ESïŒGLESïŒã«åºã¥ããŠããŸããEmbarcaderoDelphi XE7ã䜿çšããŠããŸããã©ãããã©ãŒã ã䜿çšããŠããŸãã FMïŒFireMonkeyïŒãå€ãè¯ãæ代ã®ããã«ãç§ãã¡ã¯èªåãã¡ã§ãã¹ãŠããŒãããæžããŸãã

ããã«äœæ¥ãååã«åå²ããããšãææ¡ããŸãã
-ã¯ãã¹ãã©ãããã©ãŒã ã®ã°ã©ãã£ãã¯ã©ã€ãã©ãªãäœæãããã®äœ¿çšäŸãæ€èšããå®è£
ã®è©³çŽ°ããã€ã³ããã質åã«çããŸãã
-ããªãã®è²¬ä»»ã¯ããã»ã©å€§ãããããŸãããããŸããŸãªã¢ãã€ã«ããã€ã¹ã®ãã¢ãã¹ããå®è¡ã«é¢ããã¬ããŒããã¬ãã¥ãŒãšæ¹å€ãæ°ããã¢ã€ãã¢ãš
æ°é®®ãªè ãã©ã€ãã©ãªãšã¢ããªã±ãŒã·ã§ã³èªäœã®æ°ãããŠãŒã¶ãŒãå¿
èŠã§ãã
1.æåã®ãã¢Android mc.apk 3.8 MB
yadi.sk/d/n1wDuX1RhC4QXWindows mc.zip 1.9 MB
yadi.sk/d/tBKQxaV7ff8KWãªããžããªå
ã®ãœãŒã¹ïŒ
sourceforge.net/p/delphioga/code/ci/default/treeæåã®ããŒãžã§ã³ã§ã¯ãããã°ã©ã ã¯ããªãããŒã§ã¯ãããŸãã-ç»é¢äžã«4096åã®è§ã®ããè²ã®ããŒã«ã衚瀺ããã ãã§ããããªãŒã«ã¡ã©ãã¢ãŒãã§ããããé£ã³è¶ããããšãã§ããŸãã RGBã«ã©ãŒã¹ããŒã¹ã®åçã«åŸã£ãŠçäœããã€ã³ãããŸããããçäœãå転ããŸãã ãã®äŸã§ã¯ã3Dããªããã£ãïŒç¹ã«çäœïŒãæ§ç¯ããæ¹æ³ãšãã¬ã³ããªã³ã°ãæé©åããæ¹æ³ïŒéå°ã«ãªã³ã°ããªããžã§ã¯ãã®è©³çŽ°åïŒãæ€èšããŸãã
ããããç§ãã¡ã¯å°ããªå
¥ééšåãªãã§ã¯ã§ããŸããã
2.åæ±èª¬ææžãAndroidã¹ããŒããã©ã³/ã¿ãã¬ãã1. mc.apkãã€ã³ã¹ããŒã«ããŸããããã¯ããã°ã©ã ã®ã€ã³ã¹ããŒã«ã¢ãŒã«ã€ãã§ãã ãããè¡ãæ¹æ³ã«ã€ããŠè³ªåãããå Žåã¯ããã€ã§ããæäŒãããŸãã
2. apkãã€ã³ã¹ããŒã«ãããšãããã°ã©ã ãã€ã³ã¿ãŒãããã«ã¢ã¯ã»ã¹ããå¿
èŠããããšããèŠåã衚瀺ãããå ŽåããããŸãã å®éãããã°ã©ã ã¯ãããã°ã¢ãŒãã§ã³ã³ãã€ã«ãããŠããããããããã¬ãŒïŒgdbserverïŒããã³logcatãã°ã³ã³ãœãŒã«ãæ©èœããããã«ã¯ãããŒã«ã«ãããã¯ãŒã¯ãžã®ã¢ã¯ã»ã¹ãå¿
èŠã«ãªãå¯èœæ§ããããŸãã ãŸã å¿
èŠãªãã°ã ããã°ã©ã èªäœããã¯ããããã¯ãŒã¯ã«ã¯äžåã¢ã¯ã»ã¹ãããç»é¢ã«ã°ã©ãã£ãã¯ãæç»ããã ãã§ãã
3.ã€ã³ã¹ããŒã«åŸããã¹ã¯ããããmcãã«æ°ããã·ã§ãŒãã«ãããè¿œå ããŸãã ããã°ã©ã ãå®è¡ããŸãã ã¹ã¯ãªãŒã³ã»ãŒããŒ-FMã®å
ã«æå¿ããŸãïŒããã©ã«ãã§ã¯ãDelphiã¢ãã€ã«ãããžã§ã¯ãã®ã¢ã€ã³ã³ã¯ãŸã å€æŽããŠããŸããïŒã ã¢ããªã±ãŒã·ã§ã³ã®èµ·åæéãçŽæ°ç§ã§ã©ãã ãæã£ãŠããã®ãããããŠãã®ã·ã§ã¢ã«æ³šæãæã£ãŠããŸããïŒ ããããµã³ãã«FMã¢ããªã±ãŒã·ã§ã³ã®ããŠã³ããŒãæéãšæ¯èŒããããšãã§ããŸãããããŸã§ã®ãšãããæ¯èŒã®ã»ããæå©ã§ãã
4.ãããããããããã æãšã¿ããã¹ã¯ãªãŒã³ã䜿çšããŠãèŠç·ã®æ¹åãšåãã®æ¹åãå€æŽããŸãã å³äžã«ã¯ãç»é¢äžã®ãã¿ã³ãããã€ããããŸã-åæ¹ãšåŸæ¹ã§ãã æã2æ¬ããå Žåã¯ã移åãšã¿ãŒã³ãåæã«è¡ãããšãã§ããŸãã ããã«ã¯ãããçš®ã®åšçšããæ¬åœã«äœããå¿
èŠã§ãããç§ã¯åçŽãªç掻ãçŽæããŸããã§ããã
5.å¥ã®ã¢ããªã±ãŒã·ã§ã³ã«åãæ¿ããããã¿ãã¬ããããã¹ãªãŒãç¶æ
ãã«ãããšïŒã¿ãã¬ãããæã£ãŠããããã¢ãã€ã«ããã€ã¹ãã¿ãã¬ãããšåŒã³ãŸãïŒãããã°ã©ã ã¯ã°ã©ãã£ãã¯ã¹ã®ã¬ã³ããªã³ã°ãåæ¢ããŸãïŒGLESã³ã³ããã¹ããšã¢ããªã±ãŒã·ã§ã³ãŠã£ã³ããŠèªäœã¯åé€ããããããAndroidã§å®è¡ããå¿
èŠããããŸãïŒãããã°ã©ã èªäœã¯åæ¢ããŸããä»äºã ã¢ããªã±ãŒã·ã§ã³ã«åãæ¿ããããã¿ãã¬ããããèµ·åããããšããŠã£ã³ããŠãšã³ã³ããã¹ããåäœæãããåæ¢å°ç¹ããã®æ
ãç¶ããŸãã ãã¹ããããšãã¯ãã®ãã¥ã¢ã³ã¹ã«æ³šæãæãå¿
èŠããããŸããäžéšã®ã²ãŒã ã¯æ£ãããå埩ãããæ¹æ³ãç¥ããŸããããã§ããå¿
èŠããããŸãã
6.ã¿ãã¬ãããæ°Žå¹³ã«ã次ã«åçŽã«åããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ãããã2ã€ã®ã¢ãŒãã®ããããã§ç¢ºèªããå¿
èŠããããŸãã ãã¡ããããã®ãããªããªãã¯ã¯ãããã€ã¹ã®è¡šç€ºæ¹åããèªåãã«èšå®ãããŠããå Žåã«ã®ã¿æ©èœããŸãã
7.ãã¢ã®çµäºã¯ç°¡åã§ã-ãæ»ããã·ã¹ãã ãã¿ã³ãã¯ãªãã¯ããŸãã
8.èšäºãžã®ã³ã¡ã³ãã«ã䜿çšããã¢ãã€ã«ããã€ã¹ã®çš®é¡ïŒã¡ãŒã«ãŒãã¢ãã«ïŒãèšå
¥ãããã®ç¹æ§ãCPUãšGPUã®çš®é¡ãOSããŒãžã§ã³ãèŠã€ããããšããŸãã ãã®ããŒã¿ãã¬ããžããªã®hardware.txtãã¡ã€ã«ã«å«ããŸãã
3.æäœèª¬ææžãWindows1. zipã¢ãŒã«ã€ãã解åããŸãã exeãã¡ã€ã«ã®éã«é©ãããšã¯ãããŸããããã¢ã¯ãããã°ã¢ãŒãã§ã³ã³ãã€ã«ãããexeãªãªãŒã¹ã§ã¯1.5 MBã«ãªããŸãã mc.exeãéå§ããŸãã
Androidã®ããã«ãããã¯ãŒã¯ã®äœ¿çšã«é¢ããã·ã¹ãã èŠåã¯ãããŸããããããã¯ãŒã¯ã¯ãã¢ã§ã¯äœ¿çšãããªããããPCã§ã¯ãããã¬ãŒãšãã°ãããŒã«ã«ã§åäœããŸãã
2.ãããããããããã èŠç·ã®æ¹åãšåãã®æ¹åãå€æŽããã«ã¯ãå·ŠããŠã¹ãã¿ã³ïŒLMBïŒãæŒããªããç»é¢ãããã©ãã°ãããŸãã ã¹ããŒã¹ã移åããã«ã¯ãããŒããŒãã®[WASD]ããŒãæ©èœããŸãïŒç¢å°ãŸãã¯NumPadã®ç¢å°ã®ããããïŒã ååŸã«ç§»åããããã®ç»é¢äžã®ãã¿ã³ããããã¯ãªãã¯å¯èœã§ãã [F1]ã¯ãã«ãã衚瀺ãã[ESC]ã¯ããã°ã©ã ãçµäºã§ããŸãã
3. 2çªç®ã®ãŠã£ã³ããŠïŒããã°ã©ã ãèµ·åãããšãã³ã³ãããŒã«ããã«ã«2ã€ã®ãŠã£ã³ããŠã衚瀺ãããŸãïŒã«æ³šæããŠãã ãããããããããã°ã³ã³ãœãŒã«ã§ãã Androidçšã®åæ§ã®ã³ã³ãœãŒã«ïŒlogcatïŒã¯ãåŸã§æ€èšããŸãã ãã³ããŒGPUã®åŸã«ãã¬ã³ãã©ãŒïŒãããªã«ãŒãã®äŒç€Ÿ/ã¿ã€ãïŒãOpen GLããŒãžã§ã³ãæžã蟌ã¿ãŸãã OpenGLã®ããŒãžã§ã³ã3.0ããäœãå Žåãå°æ¥ã®ã©ã€ãã©ãªæ©èœã®äžéšãå€ããããªã«ãŒãã§åäœããªããšã ãèšã£ãŠã¿ãŸãããã ãã ããã¢ããªã±ãŒã·ã§ã³ã«ã¯ããã®ãããªæ©èœã®å®è£
ã®2ã€ã®ãã©ã³ããå«ããããšãã§ããã©ã®ãããªå Žåã§ãæ©èœããŸãã
4.ãã®äŸã§ã¯VSYNCããªãã«ãªã£ãŠããŸããFPSã¯60 Hzãã¯ããã«è¶
ããããšãããïŒå¯èŠãªããžã§ã¯ãããç®ãé¢ããŠã¿ãŠãã ããïŒãGPUãšCPUã®è² è·ã¯æ倧ã§ãã ããã¯ããã¬ãŒã ã¬ã³ããªã³ã°é床ããã¹ãããããã«è¡ããŸããVSYNCãæå¹ã«ãªã£ãŠããå Žåãè² è·ã¯æ£åžžã«ãªããŸãã
4.ç»é¢ãžã®ãããã°åºåå·Šäžã®ã¹ã¯ãªãŒã³ã·ã§ããã«ã¯ãããã€ãã®é»è²ã®æåãšæ°åããããŸãã
FPSã¯ã1ç§ãããã®å¹³åãã¬ãŒã æ°ã§ããããã¯ãæç»é床ãè©äŸ¡ããããã®äž»ãªããŒã«ã§ãã VSYNCã¯Androidã§æå¹ã«ãªããFPSã¯ç»é¢ã®ãªãã¬ãã·ã¥ã¬ãŒãïŒ60 HzïŒã«ãã£ãŠå¶éãããŸããããã¢ã§GPUã®è² è·ã調æŽããŠãFPSãã»ãšãã©ã®ã¢ãã€ã«ããã€ã¹ã§ãæ²ããããã«ããŸããã ã³ã³ãããŒã«ãšã¢ãã¡ãŒã·ã§ã³ãé©åã§ããéããããã¯æããããŸããã Windowsã§ã¯ãVSYNCã¯ãªãã§ãFPSã«ã¯å¶éããããŸããã
TDF -1ãã¬ãŒã ãæç»ããå¹³åæéïŒããªç§åäœïŒãå®éã¯FPSã®éæ°ã ãã¿ã€ãã³ã°ããç解ããããã«å¿
èŠã§ã-ãã¬ãŒã ãæç»ããããã«æéééãçŸããé åºã FPS 60 Hzã§ã¯ããã®æéã¯çŽ17 msã§ãã
NFR-ã¢ããªã±ãŒã·ã§ã³ã®éå§ããæç»ããããã¬ãŒã ã®æ°ã æåã®1ç§éã®FPS 60 Hzã§ã¯ããã®æ°å€ã¯60ã«éããŸãã
T-ã¢ããªã±ãŒã·ã§ã³ã®éå§ããã®ããªç§åäœã®æéãã¢ãã¡ãŒã·ã§ã³é¢æ°ã®åŒæ°ãšããŠäœ¿çšããŸãããã®äŸã§ã¯ãçäœã®å転ã¯ããã«äŸåããŠããŸãã
POS -XYZ 3Dã¯ãŒã«ãã®ã«ã¡ã©åº§æšã¯ã軞ã®å§ç¹ã§æ¬¡ã®ããã«é
眮ãããŸããXã¯å³ãYã¯äžãZã¯ç§ãã¡ã§ãã
AHãAV-æ°Žå¹³ããã³åçŽã«å¯Ÿããã«ã¡ã©ã®å転è§åºŠïŒåºŠåäœïŒã ããŒã«è§ã«ã€ããŠã¯åå¥ã«è©±ããæ¹ãè¯ãã§ãããã
Nã¯ããŠãããŒã¹å
ã®ãªããžã§ã¯ãã®ç·æ°ã§ãã
NV-å
šäœçãŸãã¯éšåçã«éåžžã«å€ãã®ãªããžã§ã¯ããèŠçïŒéå°ãã«ã¡ã©ã®èŠéã®è§éå°ïŒã«åé¡ãããŸãã
HD-éåžžã«å€ãã®è¿ãã®ãªããžã§ã¯ãããããã«åªããã¬ã³ããªã³ã°å質ã§è¡šç€ºãããé ãã®ãªããžã§ã¯ããããç°¡åã«æç»ãããŸãã
SCR-ç»é¢è§£å床ã
5.éçºããã»ã¹ã¯ã©ã®ãããªãã®ã§ããïŒUSBã±ãŒãã«ã䜿çšããŠWindowsã§ã¿ãã¬ãããPCã«æ¥ç¶ããŸãïŒWi-Fiã䜿çšã§ããŸãïŒã ãŸããAndroidçšã®ç¹å®ã®æ©èœã®ãã©ãããã©ãŒã åºæã®ã³ãŒããèšè¿°ããã¿ãã¬ããã§ããã°ã©ã ãèµ·åããŸãã äœæ¥ã®ãã®éšåã«ã¯å€ãã®å¿èãå¿
èŠã§ããã¢ããªã±ãŒã·ã§ã³ã¯æ¯èŒçé·æéã¿ãã¬ããã§ã³ã³ãã€ã«ããã³å®è¡ãããŸãã ãããã°ãå¯èœã§ãïŒãã¬ãŒã¯ãã€ã³ããã¹ãããããšã®å®è¡ãå€æ°ã®ã¹ããŒã¿ã¹ã®è¡šç€ºïŒã ãŸããlogcatã§ã¢ããªã±ãŒã·ã§ã³ã®ãããã°åºåã䜿çšããŸãããªã¢ã«ã¿ã€ã ã§PCã§ãã°ãçŽæ¥ç£èŠã§ããŸãã ã¿ãã¬ããã§åäœããå ŽåãWindowsçšã®æ©èœã³ãŒãã®ãã©ãããã©ãŒã åºæããŒãžã§ã³ãäœæããŸããããã¯æ¢ã«ç°¡åã§ãã ãã®åŸã楜ããéšåãå§ãŸããŸã-ããã°ã©ã ã®äž»èŠéšåããŠãããŒãµã«ã³ãŒãã§èšè¿°ããåãååã®ãã©ãããã©ãŒã é¢æ°ãåŒã³åºããPCã§ãã§ãã¯ããããŸã«ã¿ãã¬ããã«ã¢ããããŒãããã ãã§ãååãšããŠãã¹ãŠãããã§æ©èœããŸãã
6.ãã³ãããã®äžãœãŒã¹ã³ãŒããèŠãŠã¿ãŸãããã å
±éãã©ã«ããŒã«ã¯ãã©ã€ãã©ãªãŒèªäœããããŸãã Draw.pasãã¡ã€ã«ããå§ããŸãããã
ã¯ãã¹ãã©ãããã©ãŒã ã°ã©ãã£ãã¯ã¹ã¯äœã«åºã¥ããŠããŸããïŒ Windowsã§ã¯ãOpenGL.pasã¢ãžã¥ãŒã«ã䜿çšããŸãããGLES for Androidã«é¡äŒŒããæ©èœïŒAndroidapi.Egl.pasãAndroidapi.Gles.pasãAndroidapi.Gles2.pasã¢ãžã¥ãŒã«ïŒã®ã¿ã䜿çšããŸãã
uses Types,SysUtils, {$IFDEF Android} Androidapi.Egl, Androidapi.Gles, Androidapi.Gles2, {$ENDIF} {$IFDEF MSWINDOWS} Winapi.OpenGL, {$ENDIF} Vectors, Colors, Textures, DrawPolyhedron, DrawSphere;
OGLãšGLESãåãå Žåãæ§æã«ã»ãšãã©éãã¯ãªããglOrthoã®ã¿ãããªãã³ã°ããå¿
èŠããããŸããã {$ IFDEF ANDROID}ã{$ IFDEF MSWINDOWS}ãªã©ã®æ¡ä»¶ä»ãã³ã³ãã€ã«ãã£ã¬ã¯ãã£ãã䜿çšããŠããã©ãããã©ãŒã åºæã®å®è£
ã«ã€ããŠèª¬æããŸãã
{$IFDEF ANDROID} procedure glOrtho (left, right, bottom, top, zNear, zFar: GLfloat); begin glOrthof(left, right, bottom, top, zNear, zFar); end; {$ENDIF}
ä»ã«äœãäžèŽããŸãããïŒ GLESã«ã¯glBegin / glEndããããŸããããããã£ãŠãGLESã«é¢é£ä»ããããŠããé¢æ°ãã¡ããªå
šäœã¯ãããŸããã æãã¯ãããŸãããé ç¹ã®é
åïŒæ³ç·ãè²ããã¯ã¹ãã£åº§æšïŒãžã®ãã€ã³ã¿ãäžåºŠã«æž¡ãOGL 2.0ã®ã¹ã¿ã€ã«ã§æç»ããŸãã ããšãã°ã次ã®ããã«åçŽãªäžè§åœ¢ã1ã€æç»ã§ããŸãïŒè²ã¯çŸåšã®ãã®ã§ãæ³ç·ãšãã¯ã¹ãã£ã¯ãããŸããïŒã
procedure Triangle(p1, p2, p3: TV3); overload; begin SetLength(ap3, 3); ap3[0] := p1; ap3[1] := p2; ap3[2] := p3; glVertexPointer(3, GL_FLOAT, 0, @ap3[0]); glDrawArrays(GL_TRIANGLES, 0, Length(ap3)); end;
3Då³åœ¢ã®å€ãã®äžè§åœ¢ãæç»ããã«ã¯ãTriangleããã·ãŒãžã£ãäœåºŠãåŒã³åºããªãã§ãã ããã ãã¹ãŠã®äžè§åœ¢ã®ãã¹ãŠã®é ç¹ã1ã€ã®é
åã«è¿œå ããglDrawArraysã®1åã®åŒã³åºãã§ããããæç»ããå¿
èŠããããŸãã ãã®é¢æ°ã¯ãGL_TRIANGLESãšGL_TRIANGLE_STRIPã®äž¡æ¹ã§ãçŸåšã®ãã¢ã§åçäœãæãããã«äœ¿çšãããŸãã
// c procedure DrawAVNT(avn: TAVertexN; met:GLenum; Position,Rotation,Scale: TV3); begin glPushMatrix; Transform(Position,Rotation,Scale); glVertexPointer(3, GL_FLOAT, SizeOf(TVertexN), @avn[0].V); glNormalPointer(GL_FLOAT, SizeOf(TVertexN), @avn[0].N); glDrawArrays(met,0,Length(avn));// GL_TRIANGLES glPopMatrix; end;
ããã§åæ¢ããŸããæåã®ç¥ãåãã«ãšã£ãŠã¯ããã®ãããªå
¥ééšåã§ååã§ãã ããªããããã奜ãã°ãç§ã¯ãã§ã«èšäºã®ç¶ç¶ã®ããã®æŠèŠãæã£ãŠããŸãã
PS / 2015幎6æ5æ¥
ã©ã€ãã©ãªã«obj圢åŒã®3Dã¢ãã«ã®èªã¿èŸŒã¿ãè¿œå ããŸããã

ãããã¯ã«é¢ããè¿œå æ
å ±æºïŒ
forum.sources.ru/index.php?showtopic=401121