삽질하는플머

'Opengl ES'에 해당되는 글 2건

  1. Emscripten 가지고 놀기 3. (feat. event.c)
  2. 델파이로 깨작여보는 OpenGL ES 어플

Emscripten 가지고 놀기 3. (feat. event.c)

탐구생활/WEB 관련

이전 글 


Emscripten 가지고 놀기 1. (feat. CodeLite)

Emscripten 가지고 놀기 2. (feat. GLFW, ZLib) 




이제 1편에서 만들었던 예제에 2편의 라이브러리들을 링크 해 보자. 

CodeLight 의 Project Settings 창을 열어 다음과 같이 설정해준다. 


타겟 

 Linker Options

 Libraries

 Debug, Release

 -framework OpenGL

 glfw;z

 Web

 -s USE_GLFW=3;-s FULL_ES2=1

 z







main.cpp 는 다음과 같이 만들어준다. 



#include <GLFW/glfw3.h>

#include <zlib.h>


#include <stdio.h>


int main(int argc, char **argv)

{

    printf("ZLib version: %s\n", zlibVersion());

    

    int major, minor, rev;

    glfwGetVersion(&major, &minor, &rev);

    printf("GLFW version: %d.%d.%d\n", major, minor, rev);

    

    return 0; 

}



실행시킨 결과는 다음과 같다. 




타겟을 Web 으로 바꿔서 빌드한 결과







GLFW의 event.c 는 베이스로 삼기에 참 좋은 예제라고 생각한다. 일부를 발췌해서 아래와 같이 만들어 보자. 

event.c 의 내용과 비교해 신경써야 할 부분은 다음 두가지이다. 


1. 윈도 생성시 OpenGL ES 2.0 을 지정. 

2 루프문 처리에 emscripten_set_main_loop() 함수를 사용. 


이렇게 Emscripten에서 다르게 처리해야 하는 부분은 "#ifdef EMSCRIPTEN" 으로 묶여있으니 참고하자. 



main.cpp





Func.cpp





Debug 빌드 테스트




Web 빌드 테스트








Emscripten 에 대해 수박 겉핥기로 간단히 가지고 놀아 보았다. 

생성된 JS 파일을 열어보면 그럭저럭 읽을만 하다. 

여기까지는 로컬파일에서도 테스트가 되지만 "-O2" 이상의 최적화 옵션을 주면 asm.js 로 빌드되고 웹서버가 필요하다. 

(파이썬의 SimpleHTTPServer 추천)

"-s WASM=1" 을 추가해 요즈음 핫한 웹어셈블리도 만들어 볼 수 있으니... 모쪼록 즐거운 삽질이 되시기를...






2019.6.12.


$emcc --show-ports


Available ports:

zlib (USE_ZLIB=1; zlib license)

libpng (USE_LIBPNG=1; zlib license)

SDL2 (USE_SDL=2; zlib license)

SDL2_image (USE_SDL_IMAGE=2; zlib license)

ogg (USE_OGG=1; zlib license)

vorbis (USE_VORBIS=1; zlib license)

bullet (USE_BULLET=1; zlib license)

freetype (USE_FREETYPE=1; freetype license)

......


zlib 같은 유명한 엔진은 이미 emscripten 로 포팅되어 있음.
저 삽질은 기본 지원하지 않는 라이브러리 적용시에나 유효할 듯. 






델파이로 깨작여보는 OpenGL ES 어플

여가생활/안드로이드

후배랑 술먹다가 한때 잘나가던 안드로이드폰 "HTC HTC_X515E" 하나를 갈취. 

취미삼아 FPC로 OpenGL을 돌려보며 즐거워하는 중이다. 


하지만, 코드 조금 고칠때마다 기계나 에뮬로 보내 확인하는건 별로 맘에 안듬.
게다가 맥에 만들어둔 FPC환경을 써먹느라 안드 SDK와 NDK도 맥에 깔았더니 더더욱 귀찮...

원래 걸으면 눕고싶고 누우면 자버리는게 프로그래머란 족속들 아닌가. 

파스칼 코드는 윈도에서 델파이로 깨작거리는게 아무래도 손에 익고 편하다. 


imtec, malideveloper 등에서 제공하는 OpenGL ES 에뮬레이터를 이용하면 

윈도환경에서도 OpenGL ES를 사용할 수 있다. 

아래 사이트로 가서 윈도용 OpenGL ES 2.0 / 1.1 에뮬레이터를 다운받자. 


http://malideveloper.arm.com/develop-for-mali/tools/opengl-es-2-0-emulator/


"C:\Program Files (x86)\ARM\Mali Developer Tools\OpenGL ES Emulator v1.3.0\bin" 폴더로 가서 DLL 파일들을 복사해둔다. 

델파이/FPC 용으로 번역해본 헤더와 초간단 예제는 여기에. 
(OpenGL ES 2.0 프로그래밍 가이드 챕터 1,2의 예제를 포팅)

GLES_WORK.7z



압축을 풀고 위에서 복사한 DLL 파일들을 BIN 폴더에 붙여준다. 

(OpenGL ES 에뮬레이터가 설치되었다면 DLL에 경로가 잡혀있으므로 굳이 복사할 필요는 없지만...)

인코딩에 UTF-8을 사용하므로 델파이 7 이하에서 쓰려면 ansi모드로 변환이 필요하다. 귀찮더라도 알아서 할 것. 

(내가 불친절한게 아님... 네이버의 nForge가 소스코드의 인코딩을 UTF-8만 지원... )


gl1ext, gl2ext 는 배포하지 않는다. 예전에 2.0 헤더를 바꾸면서 애플의 확장도 끼워넣었는데... 
애플과 관련된건 아무래도 뭔가 위반하는것 같은 찝찝함이 있어서... 라이센스 확인될 때 까지 당분간 보류...