윈도우 메모리 관리 (WinCE, 사용량) : Oxios-Memory Oxios-Memory : WinCE 메모리 관리 툴 사이트 : Softonic - Oxios Memory [링크] 다운로드 : oxiosmemory.zip [링크] 파일을 다운 받고 압축을 풀면 아래처럼 확인됩니다. 그리고 설치 파일을 구동할 PC와 WinCE가 포팅된 장비를 연결한 뒤, OxiosMemorySetup.exe 파일을 실행해 설치 과정을 진행합니다. WinCE 메모리 사용량 관리 프로그램인 Oxios 설치를 시작합니다. 아래를 따라가세요. 완료되면 아래처럼 WinCE 메모리 사용량 관리 프로그램인 Oxios-Memory의 설치가 완료되었다는 창이 뜹니다. 위와 같은 과정을 거치면 WinCE의 "Windows\프로그램" ..
[C#] 동적메모리 할당 해제 소스 코드 예제 (malloc) 동적메모리 사용을 위한 예제가 MSDN에 있어서 퍼왔습니다. C#에서는 stackalloc 연산자라는 메모리 관리 구문이 있습니다. 그리고 가비지 컬렉터도 동적메모리 할당, 해제 구문을 갖고 있습니다. 일반적으로 이러한 서비스(동적메모리 할당 해제)는 해당 클래스 라이브러리에서 제공하거나 운영체제에 구현되어 있습니다. 아래 예제는 동적메모리 할당을 위해 운영체제의 힙 함수를 엑세스합니다. 출처 : MSDN - A.8 동적메모리 할당 [링크]파일 : Memory.cs [링크] 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152..
비주얼스튜디오2013, 먹통 되었을 때 해결 방법 (VisualStudio2013) 가끔, 서비스팩이나 Add-on 등, 다른 프로그램을 설치하고 나서 VisualStudio2013이 먹통 돼버리는 경우가 있다. 그냥 간단하게 지우고 다시 깔 수 있는 덩치의 녀석이 아니기 때문에 난감하다. 운이 좋은(?) 경우는, VisualStudio2013 - Tools - Import Export Setting- Reset All Setting을 통해 복원 가능할 때도 있지만, 이 조차도 효과가 없을 때는, 다음 절차에 따라 초기화해주면 대부분 문제가 해결된다. 출처는 어느 일본 개발자의 블로그였기에 캡처된 그림에도 일본어가 보인다. 히라가나는 몰라도 한자를 읽고 대충 때려 맞춰보면, "관리자 권한으로 실행"하라는..
[MFC강좌] 3가지 배열 예제 (CByteArray, CWordArray, CUnitArray) MFC에서 제공하는 배열들은 아래와 같습니다. Class Name - Data Type CByteArray : 8-bit bytes (BYTEs) CWordArray : 16-bit words (WORDs) CDWordArray : 32-bit double words (DWORDs) CUIntArray : Unsigned integers (UINTs) CStringArray : CStrings CPtrArray : void pointers CObArray : CObject pointers CWordArray WORD: unsigned short int [New, Delete] 12CWordArray* pA2..
JAVA JDK 설치 - 윈도우10 자바 64비트 개발 환경 설정 이전에도 윈도우에 자바 JDK(Java Development Kit)를 설치하는 포스트를 남긴 적이 있었는데, 윈도우 10으로 오면서 이것저것 많이 바뀌었다. 안드로이드 앱을 만들 일이 있어서 JDK를 윈도우 10에서 설치하려다 보니 헷갈리는 부분들이 많이 있어서 포스트를 남긴다. 윈도우 10에서 안드로이드 앱 개발을 위해 제일 먼저해야 하는 것이 JDK 설치다. JDK를 설치해야 자바 기반의 언어이자 플랫폼인 안드로이드 앱을 만들 수 있다. 이 포스트를 보는 사람들이라면 JDK가 왜 필요한지 아실 테니 상세한 설명은 생략한다. 자바 JDK, JRE 설치 ORACLE - Downloads - Java SE 페이지로 이동해 JDK를 다운로드..
[OpenGL ES] 13. 버퍼 오브젝트, Rendering, Pre-Render Using the OpenGL ES Buffer ObjectsBuffer Object를 쓰는 것은 간단하다. Buffer Object를 다시 bind 하면 된다. OpenGL ES Buffer Object는 2개를 bind 할 수 있다는 것이 기억나는가? GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER를 동시에 bind 할 수 있다. bind하고 나선 OpenGL ES glDraw*를 이용하여 buffer object의 시작 index를 알려주면 된다. 배열 데이터 대신에 시작 index를 줘야 하므로, 시작 번호는 void형 pointer가 된다. 시작 index는 반드시 byte여야 한다. 위..
[OpenGL ES] 12. Uniform, attribute 활성화, 비활성화 OpenGL ES 배열을 설정하려면 마지막 추론 과정에서 "v(vector)"만 붙여주면 된다(glUniform{1234}{if}v). Shader의 uniform에 값을 설정하는 방법은 이게 끝이다. OpenGL ES에서 2가지 중요한 사실을 기억해라) 같은 uniform이 2개의 shader에서 사용될 수 있다는 것(양쪽에 다 선언해서)과 uniform은 현재의 program object에 설정된다는 것, 이 두 가지 말이다. 그래서 uniform과 attribute를 설정하기 전에 program 사용을 시작해야 한다. OpenGL ES, program object를 사용하려면 glUseProgram을 호출한다. 자 이제..
[OpenGL ES] 9. SL, Shader Language (쉐이더 언어) Shader Language(이하 SL)OpenGL ES, shader 언어는 표준 c와 비슷하다. 변수 선언과 함수 문법도 같고, if-then-else, 반복문도 같다. 심지어 #if, #ifdef, #define과 같은 매크로도 있다. OpenGL ES, shader language는 가능한 한 빠르게 실행되도록 만들어야 하니, 반복문이나 조건문 사용에 신중히 처리해야 한다. Shader는 GPU가 처리하고, 부동 소수점(float) 계산에 최적화되어 있다는 것을 기억해라. OpenGL ES, SL은 고유한 데이터 타입을 가지고 있다. SL's Data Type Same as C Description void void C..
[OpenGL ES] 8. 쉐이더와 프로그램 vsh, fsh (shader, program) OpenGL ES Shader id를 생성하고, 소스 코드를 업로드하고 컴파일한다. 이미 소스 코드를 가지고 있는 Shader에 새로운 코드를 업로드하면 기존의 소스 코드는 없어진다. 일단 OpenGL ES shader가 컴파일되면 소스 코드를 바꿀 순 없으며, 각 shader는 컴파일 여부를 알려주는 Glboolean형 상태 값을 가지고 있다. Shader가 성공적으로 컴파일되면 이 상태는 TRUE가 되는데, 디버그 모드에서 유용하게 쓰이기도 한다. 이것과 더불어 glGetShaderiv와 glGetShaderInfoLog 함수를 써서 어디서 오류가 발생했는지도 확인할 수 있다. 여기서 이 함수를 설명하진 않지..
[OpenGL ES] 7. 쉐이더와 Per-Fragment 이해하기 Per-Fragment Operations 이제 OpenGL ES, Fragment Shader 작업 이후에 어떤 일이 일어나는지 기술한다. (왼쪽 말고 오른쪽을 기술한다, FULL PIPELINE) 그림에선 OpenGL ES, Fragment Shader와 Scissor Test 사이에 생략된 단계가 하나 있다. "Pixel Ownership Test"라 부르는 내부 단계이지만, 개발자가 내부 단계를 안다 해도 사용할 수 없다. 그러니, 이 단계는 완전히 무시해도 된다. 몰라도 된다. 그림에 보이듯이 접근할 수도, 원하는 대로 설정할 수도 없는 유일한 단계가 Logicop이다(녹색). 우리는 보라색 단계에 집중한다. 어차피 못 건드릴 ..
[OpenGL ES] 6. Rasterize, Face Culling 3차원 설명 Rasterize 엄격한 의미로 Rasterize는 OpenGL ES가 3차원 물체를 2차원 이미지로 만드는 수학적 동작을 말한다. 3차원으로 구성되어 있어도 모니터에 보이는 이미지는 어쨌거나 2D다. 눈에 보여야 할 이미지들의 순차적인 영역 조각들은 Fragment shader에 의해 처리된다. OpenGL ES에서 3차원 물체 아래 3가지로 분리된다. 1. 지금 눈에 보이는 것 2. 지금 이후에 보이는 것 3. 지금 이전에 보였던 것 하지만, Programmable pipeline 그림[OpenGL ES 강의 1 참조[링크]]에서 Rasterize는 그래픽 파이프라인의 작은 부분이란 것을 확인할 수 있다. 근데 이게 왜..
[OpenGL ES] 5. 3D 텍스쳐(Texture), 3D 오브젝트 이해하기 TextureOpenGL ES에서 Texture의 존재감은 매우 크며 처음 언급하고자 하는 건 POT다. OpenGL ES는 POT 텍스쳐만을 받아들이는데, 이 텍스쳐는 모두 가로, 세로의 길이가 2의 배수여야 한다. (2, 4, 8, 16, 32, 64... 1024픽셀) 1024의 사이즈는 적당하면서도 보통은 최대 크기를 의미하기도 한다. 따라서 OpenGL ES에서 사용하는 텍스쳐는 다음과 같은 크기여야 한다. - 64 * 128- 256 * 32- 512 * 512 200 * 200, 256 * 100 같은 길이의 텍스쳐는 사용할 수 없다. 이와 같은 제한 사항은 OpenGL ES를 구동시켜야 하는 GPU를 위한 최적..