방준선

'쥬신게임개발학원/3. DirectX SDK의 기초 : DirectX SDK'에 해당되는 글 5건

  1. 메모리 릭 찾기
  2. 여러분들의 성원에 힘입어 비공개로 전환합니다 1
  3. 64일차(4-04) 벡터 재정리 1
  4. 63일차(4-03) 벡터의 외적 1
  5. 62일차(4-02) 벡터 1

메모리 릭 찾기

쥬신게임개발학원/3. DirectX SDK의 기초 : DirectX SDK
저번에 필기해놓은 메모리 릭 체크 해주는 부분이 날아가서 다시 씀


Defines.h에

1
2
3
4
5
6
7
8
#define _CRTDBG_MAP_ALLOC 
 
#ifdef _DEBUG 
#ifndef DBG_NEW 
#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ ) 
#define new DBG_NEW 
#endif 
#endif  // _DEBUG  
cs


추가


1
#include <crtdbg.h>
cs


헤더도 추가


클라이언트 cpp에

1
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
cs

한줄 추가


여러분들의 성원에 힘입어 비공개로 전환합니다

쥬신게임개발학원/3. DirectX SDK의 기초 : DirectX SDK

여러분들의 성원에 힘입어 비공개로 전환합니다

'쥬신게임개발학원 > 3. DirectX SDK의 기초 : DirectX SDK' 카테고리의 다른 글

메모리 릭 찾기  (0) 2017.10.16
64일차(4-04) 벡터 재정리  (1) 2017.08.04
63일차(4-03) 벡터의 외적  (1) 2017.08.03
62일차(4-02) 벡터  (1) 2017.08.02

64일차(4-04) 벡터 재정리

쥬신게임개발학원/3. DirectX SDK의 기초 : DirectX SDK

벡터 정리(코딩 기준)

벡터: 힘(화살표의 길이)과 방향을 가지고 있는 데이터(방향 벡터)

최소2개 최대 4개

2개: X,Y 축 선상의 힘과 방향

4개: 3차원(x,y,z) + 위치인지 방향인지(w)

힘과 방향: 원점(0,0)부터 시작

화살표가 어디에 있든 길이와 방향이 같으면 모두 같은 벡터


위치벡터: 단순히 객체의 위치를 표현하기 위한 2,3차원 상에서 사용하기 위해서 사용함

벡터의 길이: 피타고라스의 정의 루트(x 밑변 제곱 + y 높이 제곱 + z 깊이 제곱)


단위 벡터: 벡터의 길이가 1인 벡터
Normalize(단위 벡터 화): 벡터의 각 요소 xyz를 벡터의 길이로 나눔

->방향을 유지한채 길이를 1로 만듦

->초기화(0, NULL)이 아님!->단순한 위치 벡터가 됨


벡터의 덧셈: 객체의 위치가 점으로 표현되 있으면 이 위치에다 이동하고 싶은 방향 벡터를 더함 + 이동할 거리

->해당 방향으로 움직임


벡터의 뺄셈: 방향 벡터

A-B(B가 A를 바라봄) B-A(A가 B를 바라봄)

단위 벡터화 한 후 상수를 곱하면 방향은 유지한 채 한 틱당 해당 상수만큼 움직인다

-> 상대방을 따라가게 하기 위해 사용


벡터의 내적: 2개의 방향 벡터 A벡터 ‘ B벡터

위치 벡터가 아님!

결과: 하나의 벡터 A를 또 다른 벡터위에 수직으로 투영시킨 벡터 A`의 길이와 투영받은 벡터 B의 길이를 곱함

= ||A`|| * ||B|| = ||A|| * 코사인세타 * ||B|| -> 단위 벡터화 해서 A와 B의 길이는 1이 됨

-> == 1 * 1 * 코사인세타 == 각 원소끼리 곱하고 더한 것

코사인 세타 : 밑변/빗변 ||A|| / ||A`||

||A`|| = ||A|| * 코사인세타

응용: 두 벡터 사이의 각도를 구할 때


면접 질문:

인성(대학 때 생활..)

기술(이터레이터로 stl로 이레이즈할때 주의해야 할 사항)


벡터의 외적 : A벡터 x B벡터

두 벡터에 모두 수직인 벡터를 구한다

3D가서 회전축을 기준으로 할 때(비행 슈팅게임)


포폴

얼마나 게임답게 만들었는가?

이 게임의 시작과 끝을 정확하게 맺었는가?

-> 단순한 테스트 프로젝트가 아닌

컨테츠의 양


63일차(4-03) 벡터의 외적

쥬신게임개발학원/3. DirectX SDK의 기초 : DirectX SDK

회사가서 요령부리지 말고

최소 6개월~1년동안은 오버아닌 오버해서 야근도 해보고

남들이 내 노력을 안 알아줘주는거 같아요 하지말고 해봐

관심없는 거처럼 보여도 다 알고있어

그때가면 파트장도 다 알아 다 보여

절대 스타트업 회사(30명이하인)회사는 가지마!


내적을 활용할 수 있는 점

마름모 타일.. 쿼터니안?

마우스를 클릭했을 때 마름모 안에 있는지

직선의 방정식을 구하고

y=ax+b

ax+by+c = 0

4개의 직선을 구하고 각각 마우스 좌표를 대입해서 확인하면 돼


직선의 방정식을 안하고 이용

->내적


마름모의 끝점에서

마우스의 좌표를 뺀다->방향 벡터

0~180도 이면 오른쪽

180~ 왼쪽

1,2 -> -2, 1 수직

2개 바꾸고 -1붙이면 수직

나중에 게임상에서 구현할때 다시 보여줄게요


그림자 구할때,,

가장 많이 쓸때는 벡터와 벡터 사이의 각도

->어제 말했던 추적 시 캐릭터의 회전


면접 질문 stl 벡터, 리스트, 맵

면접은 정말 운빨이에요

주로 빡센 회사는 스마일게이트

연봉이 좀 쎈데 그만큼 많이 물어봐요



벡터의 외적

두 벡터의 벡터곱->결과가 벡터로 나오는 곱하기에요

1, 0, 0

0, 1, 0

= 0, 0 ,1

굳이 곱하는 순서는 기억할 필요까지는 없어요

외적의 결과 = 두 벡터의 모두 수직인 벡터

같은 벡터를 외적하는데 순서에 따라 나오는 벡터의 방향이 달라진다

->그래서 그걸 어따 쓰는데요?

2D에서는 쓸일이 없어요

z를 쓰기 때문에


캐릭터가 항상 바라보는 벡터의 업 벡터를 임시로 만들어서 내적하면 앞을 보면서 왼쪽 오른쪽으로 이동시킬 수 있다


비행시뮬레이션

어려워요

아무리 화려하게 만들어도 재미가 없어요


내적의 표현

A ‘ B D3DXVec3Dotc(벡터2개);

외적의 표현

A x B D3DXVec3CrossC(벡터2개);



62일차(4-02) 벡터

쥬신게임개발학원/3. DirectX SDK의 기초 : DirectX SDK

다이렉트 X

그래픽 카드, 사운드 카드

기능들을 CPU에만 집중하는 것이 아닌 다른 하드웨어로 분배

이 기능에 집중된 하드웨어가 나오기 시작(그래픽,, 사운드,,)

그래픽 카드 메모리(렌더링해야 하는 자원들)

리소스를 로드할 때 선택

그래픽 카드 장치를 통한 로드-> 시스템 메모리에 저장? / 그래픽 카드 메모리에 저장?

빠른 게임의 진행

이미지의 픽셀마다 알파값 조절 투명/반투명


KGCA, 게임스쿨,,

SBS,, MBC,, 쥬신,,

SGA


유니티 > 언리얼(주가가 더 높아요)


다이렉트 X 원시적인 코드

유니티 프로그램

다이렉트 X를 이용하면 유니티와 유사한 엔진을 만들 수 있다


유니티 상용엔진만 다룰줄아는 툴러,,

프로젝트가 넘어지면 잘릴 가능성이 높다


OPENGL


벡터 행렬(게임 수학)


중학 물리. 수학


벡터

객체를 움직이고 따라가고 추적

힘과 방향

다이렉트에서 지원하고 있는 구조체

d3dxVector2,3,4 3가지 타입


힘이란?

어떠한 상수로 표현하기 좋은 데이터에요


방향?

각도를 이용하지 않는다->좌표

물리에선 화살표로 사용

화살표가 길면 힘이 쎄다(길이 = 힘)

화살표가 가리키는 방향(방향)

힘이 같아도 방향이 다르면 두개 다 다른 벡터

같은 점을 바라보는 것이 같은 벡터가 아닌

화살표가 얼마나 기울어져 있는지가 관점

길이가 같고 각도가 같으면 같은 벡터


기존의 API좌표(왼쪽 위가 0,0)가 아닌 수학 좌표(오른쪽 아래가 0,0)

원점 0,0 끝점 1,1이면 피타고라스의 정리로 인해 길이를 구할 수 있다

끝점의 x,y로 방향을 알 수 있다(1,1 의 경우 오른쪽 위 2,2의 경우 길이 2 오른쪽 위)

화살표는 반드시 원점부터 시작이 되야 한다(길이를 알 수 없기 때문)


벡터를 표현하기 위한 좌표는 반드시 2개부터 시작(float 실수형 x,y)

벡터3는 x,y,z 3차원 3D

벡터4 x,y,z,w(크기와 방향을 표현하지 않더라,, 객체의 위치)

vec3 vPos(단순히 크기와 방향이 아닌 위치 정보를 가지고 쓰기도 한다)

힘과 방향 Dir 변수명으로 구분하기로 했지만

제대로 안지켜졌기에

불변수로 추가해서 방향 벡터일 경우 0, 위치 벡터일 경우 1)


행렬에서 w값에 의해서 재미있는 일이 생겨나기 시작해요

난 재밌는데 여러분도 재밌을진 몰라요


벡터4같은 경우는 잘 안써요

가장 명확한건 벡터4이지만 변수명으로 구분하는 경우가 가장 많아요

float 4바이트만큼 더 메모리를 쓰기 때문에

그렇지만 쉐이더에선 벡터4를 겁나 많이 써요


위치 벡터

객체들의 위치를 표현하기 위해서 많이 써요


이 벡터를 가지고 어떻게 게임/코드에서 사용하는데?