카메라 설정 설명

Unity 2016. 2. 4. 23:37




설정항목

기능

Clear Flags

카메라에서 게임오브젝트를 그리고 남은 여백을 어떻게 처리할지 설정합니다.

Skybox: 설정된 스카이박스가 있을 경우 스카이박스로 여백을 채웁니다.

Solid Color: 단일 색상으로 여백을 채웁니다.

Depth Only: 여백을 투명처리합니다. 기존에 그린 내용을 모두 제거하고 처리합니다.

Don't Clear: 이전에 그려진 내용 위에 바로 새로운 화면을 그립니다.

Background

여백을 채울 색상을 지정합니다.

Culling Mask

카메라에서 그릴 레이어를 지정합니다.

Projection

카메라의 투사 방식을 결정합니다.

원근(Perspective): 유니티 월드를 원근감을 반영해 화면에 투사합니다.

직교(Orthographic): 유니티 월드를 평행하게 화면에 투사합니다. 원근감(깊이감)이 사라집니다.

(Field of View)

원근 방식의 카메라의 경우 Y축 방향의 각도를 설정할 수 있습니다. X축의 크기는 화면의 종횡비(Aspect Ratio)값을 참고해 자동으로 설정되며 1도부터 최대 179도까지 지정 가능합니다.

Size

직교 방식의 카메라에서 투사할 영역의 크기를 설정합니다. 크기 값은 사각형 영역으 높이의 절반에 해당하며 사각형 영역의 길이는 화면 종횡비 값으로 계산되어 결정됩니다.

Clipping Planes

카메라가 투사할 영역을 지정하기 위한 앞, 뒤면의 거리를 지정합니다.

Viewport Rect

카메라 화면이 스크린에 보여질 때 위치와 크기를 설정합니다. 스크린의 왼쪽 아래 좌표는 (0,0), 오른쪽 위 좌표는 (1,1)이며 스크린의 전체 너비와 높이는 1로 표현됩니다.

X, Y: 스크린 내에서 카메라 화면이 시작할 위치입니다.

W, H; 카메라 영역의 가로, 세로 크기입니다.

Depth

여러 대의 카메라를 사용할 경우 카메라로 그리는 순서를 지정합니다. 낮은 순으로 먼저 그려지며 -100이 최소값입니다.

Rendering Path

최종 화면을 렌더링하는 방식을 설정합니다.

Target Texture

카메라 화면을 지정된 렌더 텍스쳐로 설정할 수 있습니다.(페이드 인, 아웃등에 활용할 수 있습니다.)


직교카메라 Size = ((화면 세로 크기 / 2) / Pixels To Units

() 1280 * 720 해상도에서

그려질 Sprite(1280*720)Pixel To Units값이 100일경우

(720 / 2) / 100 = 3.6

따라서 Size3.6을 설정하면 꽉차게 된다.

'Unity' 카테고리의 다른 글

스프라이트시트  (0) 2016.02.11
Sorting Layer 설정  (0) 2016.02.05
Sprite 임포트 설정  (0) 2016.02.03
unity - git사용시 설정  (0) 2016.01.11
스마트폰 해상도 정리  (0) 2016.01.11
Posted by 빵원군
,

함수 실행시간 재기

C++ 2016. 2. 4. 10:13

밀리 세컨으로 시간재는 방법

timeGetTime() 함수를 이용한다.


#include "mmsystem.h"	//시간재기
#pragma comment( lib, "winmm.lib " )

void ElaspedTime()
{
    //시간재기 시작
    DWORD dwStartTime = timeGetTime();
    //함수 수행
    // 함수();
    DWORD dweElapsedTime = timeGetTime() - dwStartTime;
    printf("%d ms", dweElapsedTime);
}

'C++' 카테고리의 다른 글

간단히 개발한 openssl을 이용한 파일 암복호화 프로그램  (0) 2016.04.21
Windows OS 버전 가져오는 소스  (0) 2016.02.04
Boost설치방법  (0) 2016.01.27
Posted by 빵원군
,

Windows OS 버전 가져오는 소스.

GetVersionEx의 경우 호환성관리자를 통해 OS버전을 낮출경우

=> 예: Windows 7에서 Windows XP호환으로 프로그램 기동

낮아진 OS 버전정보가 나오게 된다. 따라서

kernel32.dll에서 제공한 "VerifyVersionInfo 관련 API를 사용한다.

이는 Win9x에서 지원되지 않으므로 Win9x계열에서는 GetVersion을 사용한다.

Windows 10 이상에서는 VerifyVersionInfo이나 GetVersionEx를 사용시 버전정보가 이상하게 동작한다. 따라서 Windows 10에서는 레지스트리에서 읽어온다.

typedef BOOL (WINAPI *VERIFYVERSIONINFOA)(LPOSVERSIONINFOEXA, DWORD, DWORDLONG);
typedef BOOL (WINAPI *VERIFYVERSIONINFOW)(LPOSVERSIONINFOEXW, DWORD, DWORDLONG);
typedef ULONGLONG (NTAPI *VERSETCONDITIONMASK)(ULONGLONG, DWORD, BYTE);


#ifdef UNICODE
VERIFYVERSIONINFOW g_pfnVerifyVersionInfoW = \
(VERIFYVERSIONINFOW)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "VerifyVersionInfoW");
#define VerifyVersionInfoT  g_pfnVerifyVersionInfoW
#else
VERIFYVERSIONINFOA g_pfnVerifyVersionInfoA = \
(VERIFYVERSIONINFOA)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "VerifyVersionInfoA");
#define VerifyVersionInfoT  g_pfnVerifyVersionInfoA
#endif

VERSETCONDITIONMASK g_pfnVerSetConditionMask = \
(VERSETCONDITIONMASK)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "VerSetConditionMask");

#define VERSETCONDITION(_m_,_t_,_c_)  \
	((_m_)=g_pfnVerSetConditionMask((_m_),(_t_),(_c_)))
   

int IsWindowVersion(int MajorVer, int MinorVer, int platformID)
{

	BOOL bRet = 0;

	if (!VerifyVersionInfoT)
	{
		//Windows NT, 9X계열
		return -1;

		// 		OSVERSIONINFO osvi;
		// 		osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
		// 		GetVersionEx (&osvi);
		// 		bRet = (osvi.dwMajorVersion == (DWORD)MajorVer);
	}
	else
	{
		OSVERSIONINFOEX osver = {0};
		osver.dwOSVersionInfoSize = sizeof(osver);

		DWORDLONG dwlConditionMask = 0;    
		DWORD masks = 0;

		if(MajorVer != -1)
		{
			osver.dwMajorVersion = MajorVer;
			VERSETCONDITION(dwlConditionMask, VER_MAJORVERSION, VER_EQUAL);
			masks |= VER_MAJORVERSION;
		}

		if(MinorVer != -1)
		{
			osver.dwMinorVersion = MinorVer;
			VERSETCONDITION(dwlConditionMask, VER_MINORVERSION, VER_EQUAL);
			masks |= VER_MINORVERSION;
		}

		if(platformID != -1)
		{
			osver.dwPlatformId = platformID;
			VERSETCONDITION(dwlConditionMask, VER_PLATFORMID, VER_EQUAL);
			masks |= VER_PLATFORMID;		
		}

		bRet = VerifyVersionInfoT(&osver, masks, dwlConditionMask);
	}
	return (bRet==TRUE)?1:0;

}

int DisplaySystemVersion()
{
	int IsNT = IsWindowVersion(-1,-1,VER_PLATFORM_WIN32_NT);
	if(IsNT == 1)
	{
		if(IsWindowVersion(5) == 1)		//Windows 2000, XP, 2003
			return 5;

		if(IsWindowVersion(6) == 1)		//Windows Vista, 7, 8
			return 6;

		if(IsWindowVersion(10) == 1)	//Windows 10
			return 10;

	}
	else //API지원 안함 2000 이하 Win9x ~ WINNT
	{
		OSVERSIONINFOEX osvi;
		BOOL bOsVersionInfoEx;

		ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
		osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

		if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
		{
			osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
			if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) ) 
				return 0;
		}

		switch (osvi.dwPlatformId)
		{
		case VER_PLATFORM_WIN32_NT:
			{

				if ( osvi.dwMajorVersion <= 4 )	//NT
					return 4;

				if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )	//2000
					return 5;

				if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )	//XP
					return 5;

				if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )	//2003
					return 5;

				// 			if ( osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0 )	//vista
				// 				return 6;
				// 			
				// 			if ( osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1 )	//win 7
				// 				return 6;

				if ( osvi.dwMajorVersion == 6 ) //vista or win7 or win 8
					return 6;

				if ( osvi.dwMajorVersion == 10 ) //windows 10
					return 10;

			}
			break;
		case VER_PLATFORM_WIN32_WINDOWS:	//9x
			{
				return 3;
			}
			break;
		}
		return 0;
	}
	return 0;
}
   
    
int GetWindowsMajorVersionNumber()
{
	LONG lResult;
	HKEY hKey;
	DWORD dwType;
	DWORD dwBytes;
	int buffer = 0;

	// open Regstry Key
	lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
		_T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"), 
		0, KEY_QUERY_VALUE, &hKey);
	if(lResult != ERROR_SUCCESS)
	{
		return -1;
	} 

	// Read Regstry Key
	lResult=RegQueryValueEx(hKey, _T("CurrentMajorVersionNumber"), 0, &dwType, (LPBYTE)&buffer, &dwBytes); 
	if(lResult == ERROR_SUCCESS)
	{
		return buffer;
	}

	RegCloseKey(hKey);
	return -1;
}

BOOL IsWin10Later()
{
	if(DisplaySystemVersion() >= 6 )
	{
		if(GetWindowsMajorVersionNumber() >= 10)
			return TRUE;
	}

	return FALSE;
}


'C++' 카테고리의 다른 글

간단히 개발한 openssl을 이용한 파일 암복호화 프로그램  (0) 2016.04.21
함수 실행시간 재기  (0) 2016.02.04
Boost설치방법  (0) 2016.01.27
Posted by 빵원군
,