본문 바로가기

win32api

(9)
Voids Bullets (OpenGL Game) Source Code 바야흐로 이 게임을 만들었던 시절로 부터 11년이 지났습니다. 세상이 변했으니 이전에 만들었던 코드를 계속 쓸수는 없는 법, 최신 MinGW-W64 에서 빌드 될 수 있는 소스코드를 올립니다. 그나마 십수년 전에 만든 코드도 어렵지 않게 구동하도록 만들어 놔서 지금에 크게 수정한 것은 없으나, 실제 게임만 올린 이 글 을 확인 하여 변경점을 확인 하는 것도 좋을 듯 합니다. 최신 소스코드 (Code::Blocks 와 MinGW-W64 가 필요)수정 사항 : 시간이 지나도 총알비가 재생성 되지 않던 문제를 해결. 코드를 빌드 해서 돌리려면 아래 글에서 게임 바이너리를 받고, TEX 및 SND 폴더를 참조 헤야 합니다. 아래의 십수년 전 글을 참조 하시기 바랍니다. 이 게임은 이전 T 사에서 근무시 샘플로 ..
GDI+ 로 돌리는 UI. 새로운 IABB 을 만들기 위해 만든 GDI+ 와 WIN32API 로만 돌아가는 UI 엔진이 얼추 완성에 가까워 지고 있습니다. 유니코드를 고정으로 지원하기에 (단일 1바이트 문자열은 엄청난 오류를 -_-;;) 한글이나 일어 등을 모두 지원할 수 있습니다. 어차피 GDI+ 에서 처리하는 거니 저는 넘기기만 하면 된느 거긴 합니다만.. windows7 에서 성공적으로 구동이 가능했고 꽤 빠른 속도를 보여 주네요. 나름 최적화를 한 상태이긴 합니다만 이제는 얼추 쓸만해 진 거 같습니다. IABB 이 기본적으로 Delphi32 를 이용해서 만들었던 점을 고려 한다면 .. UI 부분을 빼고 다시 새로 다 만들어야 하는 노가다가 필요합니다만, win32api 로 안되는게 어디 있겠어요~ 아래는 거진 완성된 UI ..
[Win32.API] 윈도우 버젼 알기. 요즘은 OS 버젼에 따라 특정 작업을 해야 하는가? 또는 다른 방법을 사용 해야 하는가? 같은 판단을 해야 할 경우가 있습니다. CPU 검사로도 사용 해서 성능을 향상 시키는 어셈블러가 있듯이 , OS 에서도 특정 비주얼 적인 부분을 부각 시킬수 있는 방법이 있습니다. 다음 코드는 OS 를 알아 오는 기본적인 방법 입니다. OSVERSIONINFO ver; FLOAT OStype = 0.0f; ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&ver); OStype = ver.dwMajorVersion + (ver.dwMinorVersion * 0.1); * 참고 * FLOAT 은 float 을 재 정의 한 것입니다. 이렇게 되면 OStype..
GDI 비트맵 을 이용해 그리는 3D world 예제. 본 소스코드는 예전에 인터넷을 떠돌다 발견했던 코드를 DEV-C++ 에서 정상적으로 빌드 되도록 수정한 코드 입니다. 코드는 모두 Win32 API 만 사용하도록 되어 있습니다. 원본 제작자님이 독특한 코딩 방식을 사용했던 관계로 , 다소 가독성이 떨어 지는 코드 였었습니다. Light 를 따라 벽에 깔린 매트 들의 밝기가 변합니다. 키보드 상하좌우 를 조절하여 카메라를 이동 할 수도 있습니다. 소스코드는 다음 첨부파일을 받으시기 바랍니다. ps. Visual C++ 에서도 프로젝트 생성으로 정상 빌드 될 것으로 보입니다.
OpenGL ES (GLUT32) 용 기본 개발 소스 본 소스코드는 2005년에 일본T사에서 근무 할 시절 T4G,S1G 칩을 사용하는 회사에 기본적으로 제공하던 간단한 소스 입니다. 기본적으로 BSP 와 같은 임베디드 시스템에서 구동 되는 환경과 맞추기 위해서 만들어진 소스 이므로 매우 간단한 구조로만 가능하도록 되어 있습니다만 , 개인적 기량으로 충분히 개선 가능 한 부분이 많으므로 OpenGL 로 게임이나 UI 같은 프로그래밍을 해 보시려는 분들에게는 좋은 발판이 될 수 있었으면 좋겠습니다. 소스는 크게 2가지로 나뉘어져 있습니다. main.h/main.c 는 Window32 API 로 OpenGL surface 를 만들고 key event 등을 처리 할 수 있도록 해 주는 부분이며 , app.h/app.c 는 실제 OpenGL 로 이미지를 그리고 처..
CPU 지원 명령어 알아 보기. CPU 에서 지원 되는 명령어set 중 대표적인 몇개를 알아 볼수 있는 asm 코드가 있다. 이 asm 코드는 인라인으로 처리가 가능하며 , 결과 값들은 각 레지스터에 저장되게 된다. 각종 CPU 명령어가 지원 되는지? mov eax,1 db 0x0F,0xA2 mov _edx,edx _edx 레지스터에 0x800000 을 AND 연산하여 0x800000 이 남으면 MMX 명령이 지원 되는 CPU 이다. 또한 _edx 레지스터에 0x02000000 로 AND 연산해서 같은 값이 나오면 SSE 가 지원되며 .. _edx 레지스터에 0x04000000 가 AND 연산으로 동일하게 나오면 SSE2 가 지원 되는 CPU 이다. 이런 명령어 처리가 필요한 이유는 , SSE 나 SSE2 명령어 set 을 사용하여 좀..
[win32.API]윈도우 객체에 그림자 들이우기. 윈도우의 XP 이상에서는 윈도우 폼 생성 클래스 중 CS_DROPSHADOW 라는 것이 있다. 하지만, 어느 SDK 에서도 이 그림자 생성에 관련된 것은 없지만 , 다음 방법으로 핸들값 을 통해 쉐도우를 생성 할수 있다. void EnableDropShadow(HWND hWnd, bool DoEnable) { DWORD classLong = GetClassLong(hWnd, GCL_STYLE); if (DoEnable) classLong = classLong | CS_DROPSHADOW; else classLong = classLong & ~CS_DROPSHADOW; SetClassLong(hWnd, GCL_STYLE, classLong); } HWND 값에는 각종 CreateWindow() 함수를 통해..
[Win32.API] 파일검색. V3 라던가 , ADaware 라던가 ... 항상 나오는게 바로 파일 검색 입니다. 파일 검색은 console 에서 dir 이나 , ls 명령으로 가능 하겠 습니다만, 실제로 C 코드내에서 쓰이는 것이라면 이런걸로는 무리겠죠 ^^ 그럼 어떻게 할까요 ? 다음 코드는 제가 Pascal 에서 쓰던 것을 옮긴 코드 입니다 (어차피 API 부르는것 이니까요) { HANDLE hSrch; WIN32_FIND_DATA wfd; BOOL bResult=TRUE; char drive[_MAX_DRIVE]; char dir[MAX_PATH]; char newpath[MAX_PATH]; char psypath[MAX_PATH]; hSrch=FindFirstFile(path,&wfd); if (hSrch == INVALID..