디버그를 시작하면 상태 표시줄에서 "Load Module"에서 무한히 멈춰버리는 경우가 있다. 특히 Android Studio를 업그레이드나 업데이트한 후에 주로 발생하게 된다. 알고 보니 이 건 이미 알려진 문제였다. 다음의 링크에 Native debugger hangs while loading libraries 부분을 보면 해결책이 있다. https://developer.android.com/studio/known-issues Android 스튜디오 및 Android Gradle 플러그인의 알려진 문제 | Android 개발자 Android 스튜디오 및 Android Gradle 플러그인의 현재 알려진 문제에 관해 알아보세요. developer.android.com 해결책 $USER/.lldb/mod..
안드로이드의 최소버전(minSdkVersion)을 기준으로 네이티브 코드는 링크가 된다.[*1], 그러다 보니 이 minSdkVersion을 강제로 올려야 되는 상황이 발생한다. 만들고 있는 앱을 지원하지 않는 기능을 제외하고는 낮은 버전에서도 돌리고 싶은 데, 이 minSdkVersion값을 올려버리면 아예 지원하는 기기가 달라지기에 문제가 아닐 수 없다. 어쩔 수 없이 다른 방법을 사용해야 하는 데, 기기에 깔린 libGLESv3.so 파일을 읽어드려서 필요한 함수포인터를 알아 낼 수가 있다. dlOpen을 이용하기 dlOpen함수를 사용하여 dlsym을 통하여 함수의 포인터를 구할 수도 있지만, 이 또한 문제가 발생할 수 있는 데, 기기의 제조사가 OpenGL ES 3.x용 libGLESv3.so파..
우선 Choreographer의 기본 방식을 모르는 독자는 다음의 링크를 보고 오기를 바란다. 기본적인 내용과 Java코드가 있다. jamssoft.tistory.com/231 안드로이드 Choreographer 사용하기 인스턴스 생성하기 Choreographer는 new를 통해 생성할 수도 없고, 다른 방법으로 만들어야 한다. Choreographer choreographer = Choreographer.getInstance(); 위와 같이 static함수를 호출하는 것으로 끝난다... jamssoft.tistory.com Native에서 Choreographer를 사용하려면 Api Level이 24(Nougat/누가)이상이 되어야 한다. 따라서 아직 누가 미만의 기기들이 많은 관계로 되도록이면 Jav..
인스턴스 생성하기 Choreographer는 new를 통해 생성할 수도 없고, 다른 방법으로 만들어야 한다. Choreographer choreographer = Choreographer.getInstance(); 위와 같이 static함수를 호출하는 것으로 끝난다. 어짜피 화면에 그려지는 시간이라는 것은 정해진 거라 한 개만 있으면 충분하기 때문에 singleton방식으로 동작하게 만들어 두었고, 따라서 공유되는 자원이라 필요가 없어져도 일부러 삭제할 필요도 없다. 물론 최소한의 메모리는 차지하기 때문에 다음과 같이 하는 것으로 삭제작업을 하면 된다. choregrapher = null; Choreographer는 Looper를 이용하기 때문에 "Choreographer.getInstance()"를 호..
Java : Build.VERSION.SDK_INT NDK : int android_get_device_api_level() Android Version Table Version API Build.VERSION_CODES Name 커널 Exposed 1.0 1 BASE 2008/10 1.1 2 BASE_1_1 2009/2 1.5 3 CUPCAKE CupCake 2.6.27 2009/5 1.6 4 DONUT Donut 2.6.27 2009/9 2 5 ECLAIR Eclair 2.6.29 2009/10 2.0.1 6 ECLAIR_0_1 2.6.29 2009/12 2.1 7 ECLAIR_MR1 2.6.29 2010/1 2.2 8 FROYO Froyo 2.6.32 2020/6 2.3~2.3.2 9 GINGERB..
OpenGLES 초기화는 자주하는 작업은 아니지만, 다시 하려고 하면 어떻게 하는지 까먹는 작업이라 이렇게 정리를 해둔다. NDK로 코드가 작성되었으며, 이게 우끼게도 Java는 다른 식으로 작성해야 문제가 없다. 초기화 순서 1. eglInitialize 2. eglBindAPI 3. eglChooseConfig 4. eglCreate(Window 또는 Pbuffer)Surface 5. eglCreateContext 6. eglMakeCurrent 초기화는 다음의 순서로 진행한다. 순서가 바뀔 수도 있지만, 필자가 가진 모든 기기에서 위 순서를 사용할 경우 문제 없이 잘 초기화가 되었다. 그리고, 아래의 설명은 필자가 그냥 경험으로 터득?한 것이라 틀린 부분이 많을 수 있다. 어짜피 초기화만 끝나면 신..
Scroller는 View같은 것이 아니고 그냥 단순히 계산기이다. ScrollView나 Listview, RecyclerView 등에서 사용자가 손가락튕기기(플링?)을 한다던가 하면, 화면이 움직이는 데, 이 화면의 움직임이 시작시에는 빠르게 움직이다가 끝날 때 쯤은 천천히 멈추는 경우가 많다. 이런 것들을 Elastic Ease라고 하는데, 이 걸 산수로 현재의 보여질 위치를 계산해 내야한다. 수학을 잘하는 사람이야 쉽게 만들 수 있지만, 초보자 특히 수포자들에게 이 작업은 그리 쉽지는 않다. 안드로이드에서는 이 작업을 바로 할 수 있게 Class를 하나 제공해 주고 있다. Scroller라는 Class인데, 워낙 스크롤할 때 많이 써서 이런 이름이 붙은 듯하다. 스크롤 이외에도 사용처는 많으니 이 ..
동작방식 색변경을 위해 안드로이드에서 제공하는 행렬(Matrix)는 5x4로 다음과 같이 생겼다. [ a b c d e f g h i j k l m n o p q r s t ] 이 행렬을 수식으로 나타내면 다음과 같이 된다. R' = a*R + b*G + c*B + d*A + e G' = f*R + g*G + h*B + i*A + j B' = k*R + l*G + m*B + n*A + o A' = p*R + q*G + r*B + s*A + t 행렬이 나왔다고 해서 겁먹을 필요는 없다. 이 수식을 천천히 살펴보자. 맨 오른쪽의 (e, j, o, t)값은 앞부분의 곱하기 연산과 관련 없이 그냥 더하고/빼는 값일 뿐이다. RGBA값을 강제로 끌어 올리거나 내리는 용도로 사용되는 값이다. R' 값은 원본의 R,..
- Total
- Today
- Yesterday
- 사용료
- 재테크
- 재태크
- 텍스처
- texture
- 애드센스
- 전기요금
- OpenGLes
- 금리
- 예금
- choreographer
- 적금
- 전기세
- 컴퓨트쉐이더
- 전기료
- ComputeShader
- 에어콘
- 안드로이드
- 경제보복
- OpenGL ES
- 아끼는 법
- 애드핏
- 컴퓨트셰이더
- gpgpu
- TTS
- 공유 컨텍스트
- 티스토리
- Android
- 에어컨
- 블로그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |