ComputeShader는 한개의 쉐이더만 있으면 된다. 다음은 ComputeShader를 컴파일하는 함수다. GLuint CompileComputeShader( const char* szShaderCode ) { GLuint rc = 0; int rvalue; GLchar log[1024]; GLsizei length; GLuint program = glCreateProgram(); GLuint shader = glCreateShader(GL_COMPUTE_SHADER); glShaderSource( shader, 1, &szShaderCode, nullptr ); glCompileShader(shader); glGetShaderiv(shader, GL_COMPILE_STATUS, &rvalue ); ..
안드로이드의 최소버전(minSdkVersion)을 기준으로 네이티브 코드는 링크가 된다.[*1], 그러다 보니 이 minSdkVersion을 강제로 올려야 되는 상황이 발생한다. 만들고 있는 앱을 지원하지 않는 기능을 제외하고는 낮은 버전에서도 돌리고 싶은 데, 이 minSdkVersion값을 올려버리면 아예 지원하는 기기가 달라지기에 문제가 아닐 수 없다. 어쩔 수 없이 다른 방법을 사용해야 하는 데, 기기에 깔린 libGLESv3.so 파일을 읽어드려서 필요한 함수포인터를 알아 낼 수가 있다. dlOpen을 이용하기 dlOpen함수를 사용하여 dlsym을 통하여 함수의 포인터를 구할 수도 있지만, 이 또한 문제가 발생할 수 있는 데, 기기의 제조사가 OpenGL ES 3.x용 libGLESv3.so파..

GPU도 연산회로를 포함하고 있다. 게다가 이 연산은 3차원 공간과 색공간을 처리할 수 있는 특화된 연산함수를 포함한다. 주로 삼각함수와 고등학교에서 배운 벡터연산 등을 빠르게 계산할 수 있게 설계가 되어있다. 이 것을 잘 활용한다면 CPU의 부하를 줄이고 코어수가 훨씬 많은 GPU를 이용하기 때문에 더 많은 계산을 할 수 있다. OpenGL ES 는 3.1부터 이 연산을 바로 지원하도록 하고 있다. 이 전까지는 뭔가 그리는 것으로 작업 끝내는 용도였지만, 이 제 연산만 하고 다시 CPU에서 끌어다 쓸 수 있게 지원을 해준다. 그 것이 ComputeShader라는 녀석이다. 3.0이하 버전에서도 약간의 트릭을 써서 만들 수는 있다. Fragment shader로 그려서 FBO에 결과를 다시 읽어오면 같은..

Texture(또는 FBO)를 다른 Texture(또는 FBO)에 복사하려면 보통 대상을 FBO(Framebuffer Object)로 만들고 Shader를 작성하여 복사를 한다. 이 방식에는 FBO와 Texture를 엮는 과정이 발생하게 되는 데, 이 게 좀 부하가 걸리는 작업이다. 이 부하를 줄이고, Framebuffer를 사용하는 복잡한 과정없이 바로 복사할 수 있는 함수들이 있다. 모든 상황을 지원하는 것이 아니기에 정리를 좀 해 본다. 1 : FBO -> FBO glBlitFrameBuffer(3.0), glCopyPixels(2.0) 2 : FBO -> Texture glCopyTexSubImage2D(2.0) 3 : Texture -> FBO 바로 지원하는 함수는 없다. Shader를 만들어서..
ComputeShader를 작성하여 열심히 코딩을 하던 중에 어떤 기기는 잘 동작하지만 어떤 기기는 계속되는 깜빡임(flickering)으로 인해 심한 스트레스를 받고 있는 상황이었다. ComputeShader의 정확히 정해지지 않은 스펙과 Mali 드라이버의 버그 등 해결책이 보이지 않던 상황에서 한가지 "내가 간과하고 있는 것이 있는 가?" 하는 질문을 스스로에게 던지게 되었다. 웹을 뒤지고 뒤져서 글을 하나 발견하게 되었는 데, "FrameBuffer를 올바르게 사용하는 법"이라는 글이었다. https://community.arm.com/developer/tools-software/graphics/b/blog/posts/mali-performance-2-how-to-correctly-handle-f..
- Total
- Today
- Yesterday
- gpgpu
- ComputeShader
- 금리
- OpenGLes
- 적금
- 애드센스
- 아끼는 법
- 재태크
- 공유 컨텍스트
- 티스토리
- Android
- 애드핏
- OpenGL ES
- texture
- 전기세
- 안드로이드
- 컴퓨트셰이더
- 컴퓨트쉐이더
- 에어콘
- 텍스처
- 블로그
- 예금
- 전기요금
- 에어컨
- 경제보복
- 재테크
- 전기료
- 사용료
- TTS
- choreographer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |