'분류 전체보기'에 해당되는 글 18건

  1. 2015.06.20 openCV additional dependency
  2. 2015.06.20 CreateDevice.cpp
  3. 2015.06.20 Additional Dependencies
  4. 2015.06.20 winAPI Start
  5. 2015.05.22 1.1 팩토리얼 계산하기 : problem
  6. 2015.05.22 Ch1. 재귀적 프로그래밍
  7. 2015.05.22 Reference : 문제로 풀어보는 알고리즘
  8. 2015.01.19 Done, Todo 2015.01.19
Programming2015. 6. 20. 12:34

visual studio 2013 기준.


추가종속성

opencv_calib3d249d.lib

opencv_contrib249d.lib

opencv_core249d.lib

opencv_features2d249d.lib

opencv_flann249d.lib

opencv_gpu249d.lib

opencv_highgui249d.lib

opencv_imgproc249d.lib

opencv_legacy249d.lib

opencv_ml249d.lib

opencv_nonfree249d.lib

opencv_objdetect249d.lib

opencv_ocl249d.lib

opencv_photo249d.lib

opencv_stitching249d.lib

opencv_superres249d.lib

opencv_ts249d.lib

opencv_video249d.lib

opencv_videostab249d.lib


포함디렉터리

C:\opencv\build\include

C:\opencv\build\include\opencv

C:\opencv\build\include\opencv2


라이브러리디렉터리

C:\opencv\build\x86\vc12\lib


링커-추가라이브러리디렉터리

C:\opencv\build\x86\vc12\lib


Posted by 레라리
Programming/DirectX2015. 6. 20. 12:28

/**-----------------------------------------------------------------------------

* \brief 디바이스 생성

* 파일: CreateDevice.cpp

*

* 설명: D3D 디바이스를 생성하고, 이를 사용해서 화면을 지우는 방법에 대해서

*       공부하게 된다.

*

**-----------------------------------------------------------------------------

*/

/// Direct3D9 사용하기 위한 헤더

#include <d3d9.h>

 

/**-----------------------------------------------------------------------------

* 전역변수

*------------------------------------------------------------------------------

*/

LPDIRECT3D9             g_pD3D = NULL; /// D3D 디바이스를 생성할 D3D객체변수

LPDIRECT3DDEVICE9       g_pd3dDevice = NULL; /// 렌더링에 사용될 D3D디바이스

 

/**-----------------------------------------------------------------------------

* Direct3D 초기화

*------------------------------------------------------------------------------

*/

HRESULT InitD3D(HWND hWnd)

{

/// 디바이스를 생성하기위한 D3D객체 생성

if (NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))

return E_FAIL;

 

D3DPRESENT_PARAMETERS d3dpp;                /// 디바이스 생성을 위한 구조체

ZeroMemory(&d3dpp, sizeof(d3dpp));        /// 반드시 ZeroMemory()함수로 미리 구조체를 깨끗이 지워야 한다.

d3dpp.Windowed = TRUE;                      /// 창모드로 생성

d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;   /// 가장 효율적인 SWAP효과

d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;    /// 현재 바탕화면 모드에 맞춰서 후면버퍼를 생성

 

/// 디바이스를 다음과 같은 설정으로 생성한다.

/// 1. 디폴트 비디오카드를 사용(대부분은 비디오카드가 1 이다.)

/// 2. HAL디바이스를 생성한다.(HW가속장치를 사용하겠다는 의미)

/// 3. 정점처리는 모든 카드에서 지원하는 SW처리로 생성한다.(HW 생성할경우 더욱 높은 성능을 낸다.)

if (FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,

D3DCREATE_SOFTWARE_VERTEXPROCESSING,

&d3dpp, &g_pd3dDevice)))

{

return E_FAIL;

}

 

/// 디바이스 상태정보를 처리할경우 여기에서 한다.

 

return S_OK;

}

 

/**-----------------------------------------------------------------------------

* 초기화된 객체들을 소거한다.

*------------------------------------------------------------------------------

*/

VOID Cleanup()

{

if (g_pd3dDevice != NULL)

g_pd3dDevice->Release();

 

if (g_pD3D != NULL)

g_pD3D->Release();

}

 

/**-----------------------------------------------------------------------------

* 화면을 그린다.

*------------------------------------------------------------------------------

*/

VOID Render()

{

if (NULL == g_pd3dDevice)

return;

 

/// 후면버퍼를 파란색(0,0,255)으로 지운다.

g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0);

 

/// 렌더링 시작

if (SUCCEEDED(g_pd3dDevice->BeginScene()))

{

/// 실제 렌더링 명령들이 나열될

 

/// 렌더링 종료

g_pd3dDevice->EndScene();

}

 

/// 후면버퍼를 보이는 화면으로!

g_pd3dDevice->Present(NULL, NULL, NULL, NULL);

}

 

/**-----------------------------------------------------------------------------

* 윈도우 프로시져

*------------------------------------------------------------------------------

*/

LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

switch (msg)

{

case WM_DESTROY:

Cleanup();

PostQuitMessage(0);

return 0;

 

case WM_PAINT:

Render();

ValidateRect(hWnd, NULL);

return 0;

}

 

return DefWindowProc(hWnd, msg, wParam, lParam);

}

 

/**-----------------------------------------------------------------------------

* 프로그램의 시작점

*------------------------------------------------------------------------------

*/

INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)

{

/// 윈도우 클래스 등록

WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,

GetModuleHandle(NULL), NULL, NULL, NULL, NULL,

"D3D Tutorial", NULL };

RegisterClassEx(&wc);

 

/// 윈도우 생성

HWND hWnd = CreateWindow("D3D Tutorial", "D3D Tutorial 01: CreateDevice",

WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,

GetDesktopWindow(), NULL, wc.hInstance, NULL);

 

/// Direct3D 초기화

if (SUCCEEDED(InitD3D(hWnd)))

{

/// 윈도우 출력

ShowWindow(hWnd, SW_SHOWDEFAULT);

UpdateWindow(hWnd);

 

/// 메시지 루프

MSG msg;

while (GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

 

/// 등록된 클래스 소거

UnregisterClass("D3D Tutorial", wc.hInstance);

return 0;

}

 

 

 


'Programming > DirectX' 카테고리의 다른 글

Additional Dependencies  (0) 2015.06.20
Posted by 레라리
Programming/DirectX2015. 6. 20. 12:27



상대경로


링커(디버그)

d3d9.lib;d3dx9d.lib;winmm.lib;xinput.lib;


링커(릴리즈)

d3d9.lib;d3dx9.lib;winmm.lib;xinput.lib;


포함 디렉터리

$(DXSDK_DIR)\Include;


라이브러리 디렉터리

$(DXSDK_DIR)\Lib\x86;



절대 경로





'Programming > DirectX' 카테고리의 다른 글

CreateDevice.cpp  (0) 2015.06.20
Posted by 레라리
Programming/WinAPI2015. 6. 20. 12:26

#include<Windows.h>

 

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

HINSTANCE g_hInst;

HWND hWndMain;

LPCTSTR lpszClass = TEXT("Class");

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)

{

HWND hWnd;

MSG Message;

WNDCLASS WndClass;

g_hInst = hInstance;

 

WndClass.cbClsExtra = 0;

WndClass.cbWndExtra = 0;

WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);

WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);

WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);

WndClass.hInstance = hInstance;

WndClass.lpfnWndProc = WndProc;

WndClass.lpszClassName = lpszClass;

WndClass.lpszMenuName = NULL;

WndClass.style = CS_HREDRAW | CS_VREDRAW;

RegisterClass(&WndClass);

 

hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);

ShowWindow(hWnd, nCmdShow);

 

while (GetMessage(&Message, NULL, 0, 0))

{

TranslateMessage(&Message);

DispatchMessage(&Message);

}

return (int)Message.wParam;

}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)

{

HDC hdc;

PAINTSTRUCT ps;

 

switch (iMessage)

{

case WM_CREATE:

hWndMain = hWnd;

return 0;

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

EndPaint(hWnd, &ps);

return 0;

case WM_DESTROY:

PostQuitMessage(0);

return 0;

 

}

return(DefWindowProc(hWnd, iMessage, wParam, lParam));

}


Posted by 레라리
Algorithms/ProblemSolving2015. 5. 22. 22:02

? : factorial() 함수는 n의 값이 커지면 잘못된 결과를 반환한다. 왜그럴까? 어떤 범위의 n에 대해 올바른 결과를 출력하는가?

반환 형식이 int 이므로 

n! <= sizeof(int)

인 상황에서만 정상적으로 값을 반환할 것이다.

팩토리얼은 쉽게 결과값이 커지므로 주의해야한다.


? : 코드 1-2의 factorial2()에서 종료조건 "if (n==1) return 1;"이 없다면 어떤 일이 생길까?

재귀함수의 종료조건이 없어, 리턴을 시작하지 못해서

무한히 함수를 호출하다가 주어진 스택과 메모리를 모두 사용할 것이다. (스택 오버플로우)


같은 코드를 반복문으로도 재귀적으로도 작성할 수 있지만

factorial2() 에서처럼 재귀함수는 큰 입력에 대해 재귀호출이 계속해서 일어날 경우

함수호출시마다 차지하던 스택이 부족해질 수 있어 Stack Overflow 가 발생하게된다.

이는 Segment Fault를 유발한다.

이에 대해 컴파일러의 최적화와 관련해서는 Tail Recursion 를 참조하라.

'Algorithms > ProblemSolving' 카테고리의 다른 글

notice  (0) 2015.08.22
1.5 금액 맞추기 : problem  (0) 2015.08.22
Ch1. 재귀적 프로그래밍  (0) 2015.05.22
Reference : 문제로 풀어보는 알고리즘  (0) 2015.05.22
Posted by 레라리
Algorithms/ProblemSolving2015. 5. 22. 20:59

1.1 팩토리얼 계산하기


*n! 계산하기

*식 1-2를 이용하여 n! 재귀적으로 구하고 함수를 작성하라


1.2 연결리스트 출력하기


*재귀호출을 이용하여 리스트 출력하기

*연결리스트를 역순으로 출력하기

'Algorithms > ProblemSolving' 카테고리의 다른 글

notice  (0) 2015.08.22
1.5 금액 맞추기 : problem  (0) 2015.08.22
1.1 팩토리얼 계산하기 : problem  (0) 2015.05.22
Reference : 문제로 풀어보는 알고리즘  (0) 2015.05.22
Posted by 레라리
Algorithms/ProblemSolving2015. 5. 22. 20:56

"문제로 풀어보는 알고리즘", 황인욱 김용혁, 인사이트, 2012


http://www.insightbook.co.kr/books/programming-insight/문제로-풀어보는-알고리즘-프로그래밍-트레이닝-qa

'Algorithms > ProblemSolving' 카테고리의 다른 글

notice  (0) 2015.08.22
1.5 금액 맞추기 : problem  (0) 2015.08.22
1.1 팩토리얼 계산하기 : problem  (0) 2015.05.22
Ch1. 재귀적 프로그래밍  (0) 2015.05.22
Posted by 레라리
Project/Cabochon2015. 1. 19. 23:58

현재 제작 중 : Windows, DirectD3D9, SingleMode


DONE :  

일단 Single Mode를 위해

클래스 작성

Ball

Racket

Physics

Draw

Game


TODO : 

이제 DirectD3D , API 사용하여 main 제작

그리고 서버 준비, 소켓 공부


오늘의 파일 :


main.cpp


pingpong.cpp


pingpong.h


'Project > Cabochon' 카테고리의 다른 글

Cabochon Sprite Image Update  (0) 2016.04.05
Cabochon  (0) 2016.03.11
Posted by 레라리