본문 바로가기

프로그래밍

CFileDialog를 사용하여 경로만 가져오는 방법 CFileDialog 자체에서 폴더명만 가져올 수 있는 방법은 없습니다. 다만 해당 Dialog를 OFN_EXPLORER 를 사용해서 Folder를 선택하는 File Dialog로 생성하게 되면 폴더를 선택할 수 있습니다. 하지만 이 예에서 파일의 경로를 읽어 와서 그 경로를 얻으려고 하는 것 같으니 이 같은 경우에는 다음과 같은 방법을 사용하면 됩니다. CString strPathName; CString strFileName; char szFilter[] = "*.*||"; CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, szFilter); if ( IDOK == dlg.DoModal() ) { strPathName = dlg.GetPathName(); st.. 더보기
14 아직하고있는중... 텍스쳐 스플래팅적용 음..... 이제 마무리 추가해야할것! 브러쉬 거리에 따른 스므스효과 강제적으로 미리설정해놨던 알파맵이적용된 텍스쳐 mfc적으로 통제가능케하기 위한 mfc인터페이스추가 알파맵의 저장가능 다른 예외적인 것이 있나 확인 아흠.......무료해 ==============아래는 오늘 잠자기전 비몽사몽했을때의 글이므로 다시 ================ 많은 예제와 설명자료를 반복숙달하면서 본듯하다. 왜~ 안될까 안돌까하다가 셋렌더스테이트관련 변수를 넣었는데.....아....졸리다. 일단은 거의 기본적인 샘플이 적용되었고, 브러쉬 스무스한 개념과 더불어 텍스쳐관리 mfc탭컨트롤인터페이스를 좀 추가해서 텍스쳐도 추가하고 더군다나 저 1x1의 셀크기를 벗어나면 좀 계산이 잘못되었는데.. 일단은 자야겠다. 오늘은 큰 .. 더보기
[D3D] CreateTexture Device->CreateTexture(Width, Height, 0, 0, Format, D3DPOOL_MANAGED, pTexture, NULL); D3DPOOL_DEFAULT 비디오 메모리에 생성되지만 메모리가 부족하면 시스템 메모리에 올라온다. 그리고, 디바이스 로스트가 발생하면 일일이 처리해줘야한다. Lock과 UnLock 사용을 할 수가 없어 Locked Rect를 써서 각 픽셀값을 바꿔줄 수 없다. 단 Device->StrechRect() 함수를 통해 원본 이미지의 확대 축소를 새로운 서피스에 복사할 수 있다. (Device->ColorFill()은 색상 지정) 그리고, Device->UpdateSurface()를 통해 시스템 메모리에 있는 서피스를 생성된 서피스에 올릴수 있다. D3DPOO.. 더보기
[D3D] Texture Splatting 텍스쳐 스플래팅 마우스 픽킹에 의해 실시간으로 알파텍스쳐가 변화해서 그 알파텍스쳐와 혼합되는 텍스쳐를 적용하는 예제이다. 이 예제는 내가 하고자하는 그러한 것을 구현해놓아 어서 분석하고 적용하고 싶을뿐이다. 압축파일은 그 예제를... pdf는 그 예제의 설명을 덧붙여준다. 작성자님이 김보성님이 시고, 이 자료는 출처를 명확히 적은 어느 카페에서 긁어왔다. 책에서 디테일한 설명이 없지만, 이렇게 좋은자료를 주신 형님께도 너무 감사할따름이다. 더보기
CString -> char * CString -> char * CString str; str = "Hello"; char* ss = LPSTR(LPCTSTR(str)); char * --> CString char ss[] = "Hello"; CString str; str.Format("%s", ss); (Format대신에 GetBuffer()를 써도 됩니다.) 더보기
분할창 추가에 대해서 시간을 허비 ㅠㅠ 맵툴에서 화면에 보여주는 것과 더불어 중요한것은 제어 그리고 어떻게 제어할지 인터페이스인데.. 그 부분에 대해서 최초 MFC환경을 셋팅할때 분할창을 가능여부를 묻는데 그것을 그냥 넘겨버리고 시작하였으니.... 다시 새 프로젝트로 전에 했던 자료들을 그대로 작성했다. ㅠㅠ 어쨋든 클래스형태는 갖추었고.. 큰 우려는 없었다........ 고 생각했는데.... 정말 처음 겪는 희안한일! 우측 폼뷰에서 클릭시 에러가 뜬다. 다만 리소스뷰에서 폼뷰의 크기에 따라 에러가 나고 안나고가 생기는데...... 폼뷰의 세로사이즈가 클때?는 에러를..... 폼뷰의 세로사이즈가 작을때?는 문제없이 잘된다;; 환장할 노릇이다. ============================ 급해서 해결....... F5디버그모드로 알아본결.. 더보기
[mfc] 휠........ MFC Library Reference CWnd::OnMouseWheel The framework calls this member function as a user rotates the mouse wheel and encounters the wheel's next notch.afx_msg BOOL OnMouseWheel( UINT nFlags, short zDelta, CPoint pt ); Parameters nFlags Indicates whether various virtual keys are down. This parameter can be any combination of the following values: MK_CONTROL Set if the CTRL key is down. MK_LBUT.. 더보기
13. 브러쉬 그리기 및 지형높이측정 브러쉬 그리기는 xyz좌표가 표시되게 했던 첫번째 작업처럼 버텍스버퍼를 이용하였다. 즉 좌표와 디퓨즈값만 들어간 정점정보정도의 데이터를 토대로 그려주었는데, 머리가 나빠서 여기서부터 종이에 간략히 그려가면서 했다. 과정은 그리 어렵지않았다. 그냥 크게잡아 90도로 90도일때, 180도일때, 270도일때, 360도일때... 이렇게 생각했던것이 x는 사인곡선을 닮은 값이고, z는 코사인곡선을 닮았구나~ 요정도로 알고 그려주면 큰 문제는 없다. 그래서 저런 브러쉬 형태의 그림이 나오게 된다. 각 정점당 그리기방식은 D3DPT_LINESTRIP형태로 하였다. 좌측 상단 붉은 숫자인 전작업에서 매번 마우스움직임에대해 픽킹처리 결과값이 나오게끔 하였는데, 그 위치를 토대로 일단 x,z를 잡아서 지형위 높이값을 추출.. 더보기
12. 픽킹처리의 높낮이 체킹 설명 : 향후 브러쉬를 적용하기위해서 마우스의 이동에 따라 픽킹관련하여 마우스 움직임마다 2차원 마우스의 위치에따라 3차원 마우스의 변형을 통해 지형의 위치+높낮이를 알필요가 있다. 그 위치를 알아야 브러쉬의 위치를 그려줄수 있으니말이다. 이제 브러쉬를 표현하면 되겠다. 그림설명 : 좌측 상단 붉은 텍스트는 현 윈도우 좌표 및 픽킹적용 좌표를 출력한다. 높낮이를 변형시킨 곳과 더불어 원점거리쪽에서 먼곳까지 마우스를 훑어본결과 결과값은 잘맞아떨어졌다. 느낀점 : 이 작업전부터 Plane(혹은 하이트맵불러오기)에 마우스 픽킹에 의해 높낮이를 변형하는 것을 해보았다. 사실 픽킹처리에 대해서 내 머리가 안좋은건지 모르겠지만, 정말 책이나 각종 블로그의 내용을 참고하여서 그것을 토대로 쉽게 픽킹 처리가 가능하나,.. 더보기
지형픽킹 게임 프로젝트실습이라는 네이버카페에서 우연히 얻은자료 카페주인장 빈잉님에게 감사할따름이다. *Picking 설명 : 마우스 클릭에 의한 화면 좌표를 3D 지형과의 충돌체크를 통하여 3D공간상의 좌표를 얻어냄 1.마우스 클릭을 통한 스크린 좌표 얻기 FAR PASCAL XApp::MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { static int iXPos,iYPos; switch(uMsg) { case WM_KEYDOWN: if(wParam == VK_ESCAPE) ::DestroyWindow(hWnd); break; case WM_LBUTTONDOWN: iXPos = LOWORD(lParam); iYPos = HIWORD(lParam); P.. 더보기