2021년 10월 11일 월요일

Quad를 Camera의 Frustum 내에 맞추는 스크립트

using UnityEngine;

public class FillQuadToScreen : MonoBehaviour
{
    [SerializeFieldprivate Camera m_camera = null;
    [SerializeFieldprivate float m_distance = 1f;

    private Transform m_transform = null;
    private Transform m_cameraTransform = null;

    private void Awake()
    {
        m_transform = this.transform;
        m_cameraTransform = m_camera.transform;
    }

    private void Update()
    {
        float pos = (m_camera.nearClipPlane + m_distance);

        m_transform.position = m_cameraTransform.position + m_cameraTransform.forward * pos;

        m_transform.LookAt(m_camera.transform);
        m_transform.Rotate(01800);

        Vector3 dist = m_transform.position - m_camera.transform.position;

        float h = 2.0f * dist.magnitude * Mathf.Tan(m_camera.fieldOfView * 0.5f * Mathf.Deg2Rad);
        float w = h * (Screen.width / (float)Screen.height);

        m_transform.localScale = new Vector3(wh1);
    }
}

 이 스크립트를 Quad의 GameObject에 붙여서 카메라 연결.

 이 스크립트 일반적인 용도는 Quad를 배경으로 깔고 싶을때 사용. m_distance의 값을 카메라의 farClipPlane에 가깝게 주면 배경처럼 보이는 효과가 됨.

https://gist.github.com/Stiner/62154dd964a1e6dc9f36c84ed24150fd

2014년 4월 7일 월요일

C# 빌드 후 IL 코드 보는 방법

VS2013 기준으로 하면

1. 메뉴에서 "도구 - ILDasm" 실행



2. 창이 나오면 "파일 - 열기" 로 빌드된 exe 파일이나 dll 파일 열기.



3. 원하는 부분을 더블 클릭 하면 새로운 윈도우에 IL 코드가 나옴.


왠만해서는 IL코드 볼일이 없겠으나, 혹시나 필요가 있을 분들을 위하여.

2014년 1월 4일 토요일

range-based for 에서의 원소 접근 방식

 C++11 에서 추가된 range-based for 가 있다. 어떤 것인지 확인 해 보면서 알게 된 사실을 포스팅 해 본다.
 사실 아래에 포스팅 할 내용은 C++11 표준 문서에 나와있을 것이다. 😓

일단 아래의 코드 부터..


int main(int argc, char* argv[])
{
std::array<int, 10> arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

for (auto v : arr)
v += 5;

for (int i = 0; i < 10; ++i)
std::cout << arr[i] << std::endl;

return 0;
}


위의 코드 결과는?

1
2
3
4
5
6
7
8
9
10

이다.

 위의 코드는 혹시나 해서 해본 것인데, auto v 는 arr 의 요소에서 값 복사가 이루어 지는 것이였다. 그래서 arr 의 원소에는 어떠한 값 변화가 없었던 것이다. 그렇다면 변경을 해주기 위한 방법으로는? 아주 간단하다. auto v 를 참조형으로 해주면 되는 것이다. 아래의 코드처럼 해주면 된다.


for (auto& v : arr)
v += 5;


이렇게 해서 나오는 결과는?

6
7
8
9
10
11
12
13
14
15


일단, 위의 예시는 일반 배열로 테스트를 해 보았지만 다른 컨테이너 에서는 어떻게 되는지도 확인해 봐야 겠다.

2013년 5월 8일 수요일

윈도우즈8 에서 대기중의 CPU 사용율이 60~70%를 넘어가는 문제.

http://answers.microsoft.com/ko-kr/windows/forum/windows_8-performance/%EC%9C%888-%EC%95%84%EC%9D%B4%EB%93%A4/bf18f4dc-6ca3-43f3-bba1-00ef684f2d36?msgId=f811db93-2eb0-40c9-8175-ba25293b958a

 윈도우즈8에서 아무런 작업 없이 대기 중일때 CPU의 사용율이 60%~70%를 차지 하는 경우가 있다. 맥북에 부트캠프로 윈도우즈8을 설치 하여 사용 중인데, 윈도우즈 사용 할 때마다 팬 소리가 우렁차게 나오며 발열도 거의 요리를 할 수준까지 올라간다.
 프로세스 정보를 보면 'Windows Defender 서비스'가 많이 잡아 먹는 것을 확인 할 수가 있지만 'Windows Defender 서비스'를 종료 한다고 CPU 사용율이 줄어 들지는 않는다.

  구글링을 통하여 위의 링크를 찾았고 내용을 보면 홈 그룹에 대한 예기가 나오는데, '홈 그룹에서 나가기'를 해 주면 CPU는 원래대로의 1%~2% 돌아오게 된다.

  이 문제는 윈도우즈7 에서도 발생 하는 듯 하며, 발생한지 좀 오래 되었던 것 같다. MS에서는 이 문제에 대해 고칠 생각은 없는 듯 하다.

2013년 4월 19일 금요일

윈도우즈8 프리징 현상(수정)

 윈도우즈8 처음 설치 후 바로 사용하다 보면 프리징(멈춤)현상이 일어날 때가 있다.

 부트캠프를 포멧 하고 다시 윈도우즈8을 설치 하였는데, 사용하다 전에는 없었던 프리징 현상이 일어나는 것이였다. 이것 때문에 재설치만 5번은 한듯. 이리저리 구글 검색을 해본 결과 이 문제의 이슈가 있었던 것 같다. 간단한 해결 법으로는

윈도우즈 업데이트

 더 이상 업데이트가 없을때까지 계속 업데이트를 해주었더니, 프리징 현상이 없어졌다. 킁.

 생각해 보니 처음 윈도우즈8 설치 하자마자 모든 업데이트부터 받았던 기억이. ㅡ,.ㅡa


 추가적인 내용이 있서 수정. 아래의 명령어를 관리자 권한으로 실행을 해 줄 필요가 있었음.

bcdedit /set disabledynamictick yes


2013년 3월 2일 토요일

리눅스에서 하드디스크 마운트할때의 명령어

mount [장치 이름] [마운트 경로] -w -o codepage=949,iocharset=utf8,uid=[계정명],gid=[그룹명]


  • [장치 이름] : 보통 /dev의 sda1 sda2 sda3... 아니면 sdb1 sdb2 sdb3...
  • [마운트 경로] : 말 그대로 마운트 시킬 경로
  • -w : 쓰기 권한
  • -o : 추가 옵션들
    • codepage=949,iocharset=utf8 : 하드 디스크에 한글이 있을경우 이 옵션을 줘야 깨져 보이지 않음.
    • uid=[계정명],gid=[그룹명] : 해당 계정과, 그룹에 권한을 줌.


위의 내용은 본인이 이해한 대로 적은 내용이라 틀릴 수도 있음.

2013년 2월 13일 수요일

VirtualBox 4.2.6에 Windows 7 64bit 설치시 0xc0000225 오류 해결

VirtualBox 4.2.6 에 Windows 7 64bit 를 설치할때 아래와 같은 에러가 나오는 경우가 있다.


이럴때는 먼저 VirtualBox 확장을 설치 한 후에(이미 설치 하였다면 패스.)

해당VM -> 설정-> 시스템 -> 마더보드 -> IO APIC 사용하기

를 해 주면 해결.

Windows 8 은 시험해보지 않았다.