본문 바로가기

directx

(9)
DirectX Sound 전역 오디오 생성 방법. DirectX Sound 에서 기본적으로 버퍼를 생성 하는 부분에서 보통 다음과 같이 한다고 SDK 를 통해 알고 있었습니다만 이렇게 할 경우, 현재 CooperativeLevel 로 지정된 윈도우의 포커스를 잃을 경우 갑자기 소리가 안나옵니다 ! ZeroMemory( &dsdesc, sizeof( DSBUFFERDESC ) ); dsdesc.dwSize = sizeof( DSBUFFERDESC ); dsdesc.dwFlags = DSBCAPS_STATIC | DSBCAPS_CTRLPOSITIONNOTIFY; dsdesc.dwBufferBytes = size; dsdesc.lpwfxFormat = &wavfmt; 그래서 구글신에게 찾아 보니, 버퍼 생성시 하나의 flag 하나인 DSBCAPS_GLOBAL..
AnyStreaming Win32 Client ... 이제 CES 까지 한주 좀 더 남았습니다. 미국 까지 가서 데모 신나게 돌려야 하는 관계로 (나중에 source code 공개로 해야 하는 이유도 있지만) 급하게 2주가량 만에 만든 Windows 용 DirectX 가속 클라이언트를 완성 하긴 했습니다. 공개는 어차피 libffmpeg 쓴거라 공개 해야 하므로 나중에 github 나 bitbucket 에 올라가게 될지라 따로 올릴 필요는 없어 보입니다. DirectX 의 D2D 와 DSound 를 쓰는데, 이게 DirectX 10 부터 2D 지원이라고 하는군요. 일단 D2D 사용 하고 있어서 Windows7 부터나 구동 될 듯 합니다만, 100% MinGW-W64 로만 빌드 한 거라 MFC 처럼 지저분한 뭔가는 없을 듯 합니다. 소스가 오픈 되면 ffmp..
MinGW-W64 용 DirectInput 소스 (키보드,마우스,조이스틱) MinGW-w64 프로젝트 부터 DirectX 관련 SDK 가 포함 되어 있으므로 윈도우 어플 개발에 매우 편리함을 얻을 수 있습니다만, MFC 처럼 뭔가 꽁꽁 묶여져 있는거 찾기가 사실 어렵다 보니 직접 만들어 써야 하는게 많은건 사실 입니다. 대신 쾌적함을 얻을 수 있는건 덤 이지만 ... 그래서 제가 진행 중인 프로젝트 중에 DirectX 의 2D, input 을 가져다 쓰면서 좀 더 편리하게 써 보고자 만들었던 것을 공유 하고자 합니다. 사용은 간단 합니다. 먼저 현재 사용되는 윈도우에 생성 부분 쪽에 InitDirectInput() 를 사용하여 Dinput 을 초기화 합니다. 이떄 반환되는 값은 HRESULT 가 아니라 DXINPUT_INIT_RESULT_KEYBOARD, DXINPUT_INIT..
DirectX/Dsound 용 mp3 to wave 디코더, MinGW용 소스 & 라이브러리 * 기존 v2 소스에 버그가 있어서 업데이트 되었습니다. 현재 v3, 큰 파일을 모두 디코딩 가능. 이 소스는 MinGW (gcc) 에서 DirectX sound (Dsound) 를 사용할 때, MP3 를 음원으로 사용할 경우 유용하게 쓸 수 있는 라이브러리 입니다. 원래 소스는 ffmpeg 에 있는 것을 사용한 상태 이며, 원본 소스가 C 용으로 만들어 져 있었기 때문에 변경 없이 쓰도록 만든 상태 입니다. ( libmp3wav 라이브러리 소스는 g++ 로 컴파일 불가 ) 사용 가능한 컴파일러 제한: i686-posix-dwarf-rev3, Built by MinGW-W64 project) 4.9.2 mp3towave 만 사용할 경우, libmp3wave.a 와 mp3wave.h 파일 압축 C++ 에서..
DirectX 2D 창 메뉴가 안뜨면 창을 옮기리. 부제: DirectX 2D 와 DSound 함께 쓰기 @ Windows7, 8.x 저번 주 에 있었던 DirectX 2D 를 좀 더 개선 하여 다음과 같이 구현 하였습니다.PNG 이미지를 가져와서 D2D 이미지(텍스쳐)로 사용 하도록 함.Dsound 로 WAV 파일을 가져와 출력 하도록함, 백그라운드와 클릭 시 나오는 소리 2가지. 상단 30px 안에서 마우스 왼쪽 클릭 해서 끌면 창 전체가 이동 하도록 함. 렌더링을 thread 로 하도록 함.약간의 UI 적인 요소. 별 대단한 기법이 들어 간 것은 아닙니다만, DirectX 2D 와 Dsound 겹쳐서 쓰는 예제들이 너무 없어서 직접 병합 해 보았습니다. 소스는 MinGW-W64 에서 빌드 되도록 되어 있으며, Code::Blocks 의 프로젝트를 사..
DirectX 2D 창모드는 안되는 건가... H/W 가속을 통한 각 Frame 영상을 화면에다가 그리려고 하니 어찌 DirectDraw 는 너무 오래된 API set 이라 DirectX 2D 를 쓰려고 노력 중 입니다. 다만, 대부분 2D 가속을 쓰는 게임들이 창모드로 실행 되는 방법을 알기가 어렵다는 난해한 점에 허우적 거리고 있습니다만 ... 이 방법을 찾기 위해 좀 노가다를 해야 할 듯 하네요. GDI+ 를 쓰느니 이걸 써야 겠는데 ... GDI 에 2K 이상으로 크기가 리사이즈 된 이미지를 그리려니 이 방법 말고는 답이 없어 보입니다. 아... DirectX ... 손도 대기 싫었는데 ... 빌드 가능 환경 = Code::Blocks + MinGW-W64 (DirectX API 포함된 상태)
[FLTK] Win32 에서 HWND 를 제대로 못 얻어 올때 일단 조이스틱, 마우스, 키보드의 일정 값들을 산술화 하는 테스트 프로그램을 FLTK 로 제작 중 이었습니다만, 이게 왠걸 ... DriectX 의 DInput 에 SetCooperativeLevel() 에서 계속 실패가 나는 것 이었습니다. 대체 왜 이러나 하고 보니, ( Process Hacker 사용 ) 엄? FLTK 에서 fl_xid( window ); 로 가져 온 HWND 와 실제 FLTK 에서 사용하고 있는 HWND 가 다릅니다.... 대체 저건 어디서 나온 값이지 ... 그래서 이전에 만든 FLTK 조이스틱 테스트 하는걸 보면, 이건 또 fl_xid() 로 정상인 HWND 를 넘겨 줍니다 ... 대체 왜 ?? 왜 ?? 왜 ?? 아마 FLTK 에서 2개 이상의 window를 생성 하고 있는 상..
[FLTK] + DirectX8 + MinGW, Direct Input 으로 조이스틱 쓰기 예제. 바로 전에 올린 post 에 이어서 몇가지 작업을 더 해 보고 예제를 올려 볼까 합니다.이번에 적용한 것들은 다음과 같습니다.joystick.h/cpp(c 로 컴파일 가능) 으로 별도 API 처리.FLTK ( 주의: fltk-1.3.3-ts 사용해야 flushing 계속 해도 죽지 않음 ) 를 사용한 시각적 표현.pthread 로 polling 을 통한 update 부터 화면 표시 까지 구현.단, 이 예제에서는 Xinput 이나, Analog 부분 ( Z axis, Z rotate ) 부분 처리는 빠져 있습니다.polling 은 thread 내에서 sleep 을 30ms 하므로, 이론상으로 1초에 30 번 가량일 듯 합니다만, 이정도면 손가락이 신의 속도가 아니면 문제는 없어 보입니다. 예제는 Code:..