게임에서 마우스가 over되거나 이미지가 선택되었음을 표시하는 방법으로 이미지에 외곽선을 그리는 방법을 사용한다. 예)League of Legend 위 효과를 2D에서 Shader를 이용하여 내려 한다. Theoryfragment shader에서 현재 fragment의 상, 하, 좌, 우 fragment의 알파값을 읽어서 해당 fragment가 외곽에 있는 것인지 식별한다.외곽에 있는것으로 식별된 fragment는 기존 texture의 rgb가 아닌 외곽선 rgb값을 가지도록 한다. Code#ifdef GL_ESprecision lowp float;#endif varying vec2 v_texCoord; void main(){ vec4 color = texture2D(CC_Texture0, v_texCo..
Coocs2d-x에서 데이터를 저장하는 방법으로 UserDefault를 사용하는 방법이 있다. UserDefault::getInstance()->setIntegerForKey("stageW", 1);stageW라는 이름으로 int값 1을 저장시키는 예시 UserDefault::getInstance()->getIntegerForKey("stageW");위에서 저장한 stageW값을 불러오는 예시 자료형에 따라서 setFloatForKey(), setCharForKey() 등을 사용한다.
완벽하게 멀티 해상도를 지원하는 방법은 아니지만, 주로 glview의 절대적인 크기를 정해놓고 화면 크기에 맞게 늘리거나 줄이는 방법을 사용한다. // AppDelegate.cpp glview->setDesignResolutionSize(1280, 720, ResolutionPolicy::NO_BORDER); AppDelegate.cpp 안에 있는 ApplicationDidFinishLaunching() 함수 내에 위처럼 선언한다. ResolutionPolicy 종류-EXACT_FIT : 원본 비율을 무시하고 화면에 맞춰 출력한다.-NO_BORDER : 원본 비율을 유지하면서 화면에 빈틈없이 출력한다. 이때 비율이 더 긴 부분이 잘려나간다.-SHOW_ALL : 원본 비율을 유지하면서 화면에 맞춰 출력한다..
getVisibleSize()Director::getInstance()->getVisibleSize();- 현재 보여지고 있는 openGL view의 크기를 반환한다. getWinSize()Director::getInstance()->getWinSize();- openGL view의 절대적인 크기를 반환한다. 위 두가지 방법은 일반적으로 같은 값이지만 glview->setDesignResolutionSize(480, 320, ResolutionPolicy::NO_BORDER); 위처럼 절대적인 view의 크기를 고정시켰을 경우 실제 window와 비율이 맞지 않으면 두 값이 다르다.
함수 포인터란?함수를 가리키는 포인터 장점함수를 generic하게 사용할 수 있다.단점코드의 가독성을 떨어뜨릴 가능성이 있다. 문법반환형 (*사용할 이름)(매개변수1, 매개변수2, ...); 예제int add(int a, int b); int main(){ int (*func)(int,int); // 함수 포인터 int result; func = add; result = func(3,4); cout
CC_CALLBACK_N 함수cocos2d-x에서 주로 사용하는 콜백함수 종류별로 CC_CALLBACK_0, CC_CALLBACK_1, CC_CALLBACK_2 등 뒤에 숫자가 붙는다. 기본적으로 뒤에 붙는 숫자는 설정한 콜백함수에 자동으로 전달되는 매개변수의 수를 의미한다.필요한 매개변수는 숫자에 상관없이 전달시킬 수 있다. CC_CALLBACK_0CallFunc와 함께 사용된다.실행하는 주체를 전달하지 못한다. bool HelloWorld::init(){ if (!Layer::init()){ return false; } auto spr = Sprite::create("CloseNormal.png"); auto act1 = MoveTo::create(3, Point(100, 100)); auto cal..
클래스 전방선언이란?헤더파일에서 헤더파일을 포함시키는 행위가 컴파일 시간을 증가시키기 때문에 이를 막기 위해 포인터 객체를 선언할 때에는 클래스 선언 전에 필요한 클래스를 명시하여 헤더파일의 중복을 막을 수 있다. 방법ObjectA.h ObjectA.cpp ObjectB.h ObjectB.cpp로 구성되어 있다고 가정할 때 ObjectB 클래스에서 ObjectA가 필요하다면// ObjectB.h // #include "ObjectA.h" // 생략 가능 class ObjectA;class ObjectB{private:ObjectA *objA;// ObjectA objA; // 불가능...단 헤더파일을 포함하지 않아, 클래스에 대한 정보가 없기 때문에 포인터 객체만 사용 가능하다.
- Total
- Today
- Yesterday
- ios
- SHADER
- machine learing
- Git
- SOCKET
- 국내여행
- ue4
- Java
- 데이터베이스
- 자료구조
- database
- game
- Spring
- C++
- rxswift
- DesignPattern
- scala
- SwiftUI
- 수학
- JSP
- C
- 드라마
- 알고리즘
- mongoDB
- OS
- Cocos2d-x
- C/C++
- 운영체제
- winsock
- swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |