본문 바로가기

[ C/ C++ 프로그래밍 ]

[ 루아 ] 함수 함수란 코드의 중복을 피하고 구조적으로 만들며, 다른 사람이 이해하기 좋게 만들기 위하여 사용된다. ==> 반복된 코드들을 보기 좋게 정리해 놓은 것 ㅇ 함수의 기본 루아에서는 함수는 변수 한 종료로 처리된다 ==> 정의되는 방식은 변수와 약간 다르다. function 함수명() 코드 블럭 end 함수를 정의하기 위해서는 function 키워드를 먼저 사용하고 그 뒤에 함수명을 적는다. 코드 블럭을 적고 코드 블럭을 모두 작성했으면 end 키워드로 함수의 종료를 알린다. - 예제 소스 function test() print("함수 Test") end - 실행 결과 ㅇ 함수의 입력 입력인자를 통해서 입출력을 한다 function 함수명(입력인자) 코드 블럭 end - 예제 소스 function test(i.. 더보기
[ 루아 ] EditPlus에서 루아 사용하기 메모장에서 보다 에디트플러스를 사용하면 훨씬 쉽게 코드를 작성할 수 있다. 1. EditPlus를 다운 받자 http://www.editplus.com/kr/download.html 위에서 다운 받거나 네이버에서 EditPlus를 치면 한글판을 다운 받을 수 있다. 2. 루아 를 다운 받자 --루아는 이미 다운 받았으니 이전에 있던 경로에 추가 해주면 된다. 3. EditPlus용 Lua 문법 강조 파일 을 다운받고 추가 해준다. ==> 문법 강조 파일 에디트 플러스를 실행시킨후 메뉴에서 도구 -> 영구적인 설정에 들어가자 파일 종류 에서 추가를 눌러 Lua를 추가해주고 파일 확장자에 lua 를 해주고 구문파일에 아까 다운 받은 lua51.stx을 추가 해주자 ... 를 누르면 파일 경로를 설정해줄수 있.. 더보기
[ 루아 ] 제어 제어는 크게 분기와 반복 2가지로 나눈다. ㅇ 분기 - if에 의한 분기 한가지만 지원한다. - 기본형태 if conditions then statement . . end - 예제 local first = 1 local second = 2 if first < second then print(second .. "가" .. first .."보다 큰 수입니다."); end - 실행 - 확장 형태 if condition then statement . . elseif conditions then statement . else statement . . end - elseif는 if의 조건이 false일 경우 새로운 조건을 적용하기 위해서 사용, 필요한 만큼 여러번 사용가능 - esle는 if, elseif로 설정된.. 더보기
카툰 렌더링 ㅇGlow 카툰 세이더 float4x4 matWorldView; float4x4 matWorldViewIT; float4x4 matProjection; float3 LightDir; float4 diffuseColor; float4 ambientColor; float4 GlowColor; float4 GlowAmbient; float GlowThickness; texture base; sampler2D Texture0 = sampler_state { texture = (base); minfilter = LINEAR; magfilter = LINEAR; mipfilter = LINEAR; addressu = wrap; }; struct VS_INPUT { float4 Position : POSITION0;.. 더보기
[ 루아 ] 연산자 ㅇ 치환 연산자 - '=' 를 말한다. ㅇ 산술 연산자 - + , - , % , *, %, ^ ㅇ 관계 연산자 - >, =, 여기서 배열은 문자열이 될수도 있고 테이블이 될수도 있다. ㅇ 연산자간의 우선순위 ① ^ : 오른쪽 우선 ② -, not, # : '-'는 단항 연산자 부호를 의미 ③ *, /, % ④ +, - :'-'는 빼기 연산자 ⑤ .. : 오른쪽 우선 ⑥ >, =, 더보기
[ 루아 ] 변수 ㅇ 규칙 - 변수명은 영문자, 숫자, _를 혼합 ==> 시작은 영문,_로 시작 - 대소문자 구별 - 공백이나 특수문자를 변수명으로 사용 불가 - 예약어 사용 불가 and, break, do, else, elseif, end, false, for, function, if , in , local, nil, not, or, repeat, return, then, true, until, while ㅇ 동적변수 - 동적 변수형 지원 ==> 변수를 쓸 때 변수형을 미리 정희할 필요 없음 - 변수값들이 그 자신의 변수형을 알고 있음 ※ print함수는 입력인자의 값을 출력해 주는 기능을 가지고 있다. type 함수는 입력인자의 변수형을 반환하는 기능을 가지고 있다. ㅇ 변수의 종류 nil, 부울(boolean), 숫.. 더보기
[ 루아 ] 루아 기초 ㅇ 루아란? - 매우 덩치가 작은 스크립트 언어 --> 루아를 구현한 크기가 ANSI C코드로 6천줄 정도 - 다른 언어에 임베디드하기 용이함 - 루아의 기본엔진은 대체로 100KB가 넘지 않음 - 멀티스레딩 지원 - 코루틴(coroutine)이라는 형태를 통해 메모리가 허락하는 한 스레드 생성 가능 - 빠르다 ( 적은양의 메모리 사용) - Python이나 기타 스크립트 언어에 비해 라이브러리의 수가 빈약 ㅇ 루아 설치 http://luabinaries.sourceforge.net/download.html lua5_1_4_Win32_bin.zip Windows x86 Executables - 위의 사이트에 들어가서 자신에 맞는 비이너리를 다운로드 한후 원하는곳에 압축을 풀어주면 된다. lua5.1.exe.. 더보기
[C++] 인라인(inLine) 함수 일반 함수와 인라인 함수의 가장 큰차이는 프로그래머가 어떻게 작성하느냐에 있는 것이 아니라, C++ 컴파일러가 코드를 프로그램에 어떻게 결합하느냐에 있다. 인라인 함수는 컴파일된 함수 코드가 프로그램의 다른 코드 안에 직접 삽입되어 처리되는 함수이다. 컴파일러가 함수 호출을 그에 대응하는 함수 코드로 대체한다는 것을 의미한다. 인라인 코드를 이용하면 함수를 그 자치에서 처리하므러, 그 함수를 수행하기 위해 프로그램이 다른 주소로 점프했다가 돌아올 필요가 없다. 일반 함수보다 좀더 빠르게 수행된다. 그러나 메모리의 사용측면에서는 인라인 함수가 일반 함수보다 불리하다. 어떤 프로그램에서 인라인 함수를 열번 호출한다면, 프로그램은 그 함수의 사본을 프로그램의 코드 안에 열번이나 삽입해야 한다. 함수 코드를 수.. 더보기
[충돌처리] AABB와 AABB 충돌 처리 ㅇ AABB(Axis Aligned Bounding Box) 물체의 경계상자가 똑같은 축의 방향으로 만들어진다. 장점은 충돌처리에 계산량이 적고 직관적으로 구현 가능 단점은 물체와 경계상자와 차이가 클 수 있고 물체의 회전시 AABB를 갱신해주어야 한다. 그래서 보통 정적인 물체에 적용시킨다. 밑의 그림에서 두 AABB는 X축과 Y축으로 평행한 경계를 만들어낸다. 예로 들어 설명하면 먼저 X축부터 검사하는데 빨간박스 X축 범위가 3~10, 파란박스 X축 범위가 6~20 이라 할 때 (max(3, 6), min(10, 20))의 수열이 증가하는 값일때 충돌 (즉, 왼쪽보다 오른쪽이 클 때), 같을 경우 접함, 감소하는 값이라면 미충돌 Y축의 방향도 마찬가지로 적용하여 둘 다 충돌이 일어나면 두 AABB는 .. 더보기
[충돌처리] 구와 AABB에 대한 충돌처리 /// 구와 AABB에 대한 충돌처리 bool CheckSphereAABB(D3DXVECTOR3 _vec3Pos2,float _fRadius, D3DXVECTOR3 _vec3Pos1MAX,D3DXVECTOR3 _vec3Pos1MIN) { if( _vec3Pos1MAX.x (_vec3Pos2.x + _fRadius ) ) return false; if( _vec3Pos1MAX.y (_vec3Pos2.y + _fRadius ) ) return false; if( _vec3Pos1MAX.z < (_vec3Pos2.z -_fRadius ) || .. 더보기