스케줄러란?일정 시간 후에 콜백 함수를 실행하거나 일정 시간마다 콜백 함수를 실행하게 하는 루프 코드 // selector, interval, repeat, delay// if repeat is -1 repeat foreverthis->schedule(schedule_selector(ClassName::FuncName), 1.0f, 2.0f, 3.0f); schedule_selector라는 메크로는 함수포인터를 통해 콜백함수를 등록한다. 콜백함수는 float 형의 dt 매개변수를 가지고 있어야 한다.
RenderTexture란?렌더링을 할 수 있는 텍스처로 Cocos2d-x 에서 필요한 크기만큼 생성하여 그 위에 그리고 싶은 오브젝트들을 그릴 수 있다. 만들어진 texture에 shader를 적용시켜서 광원 효과를 내거나 작은 renderTexture를 생성해서 미니맵 같은 요소를 만들 수 있다. RenderTexture 생성 auto renderTexture = RenderTexture::create(100, 100, Texture2D::PixelFormat::RGBA8888); // width, height, pixelFormat this->addChild(renderTexture); RenderTexture에 sprite 추가 auto spr = Sprite::create("image.png")..
개발을 하다보면 한 객체가 다른 객체를 자식으로 가지는 계층 구조를 많이 만들게 되는데 이 계층화된 객체를 메모리에서 삭제(remove)시키려면 최상위 객체만 부모 레이어로부터 remove시키면 된다.임의로 최상위 객체의 소멸자에서 removeAllChildren()같은 함수를 추가하면 나중에 레이어를 삭제할 때 문제가 발생할 수 있다. 문제 발생 시나리오레이어 A에 Sprite객체 head와 SpriteBatchNode headBatch, bodyBatch가 추가되어 있고, head는 자식으로 body와 arm을 가지고 있다. 이 때 arm과 body의 이미지는 head이미지를 가지고 있는 plist와 다른 plist에 있으므로 객체 head를 생성할 때 bodyBatch를 전달하여 body와 arm을..
Cocos2d-x 파티클 시스템을 추가할 때 plist의 key값에 따라 블랜딩 방식이 지정된다. blendFuncDestination과 blendFuncSource에 의해 결정되는데 이 값에 따른 블렌딩 함수는 다음과 같다. blendFuncDestination = 1blendFuncSource = 770->ADDITIVE blendFuncDestination = 771blendFuncSource = 770->ALPHA_NON_PREMULTIPLED blendFuncDestination = 771blendFuncSource = 1->ALPHA_PREMULTIPLED
목표모션 블러 효과를 내기 방법현재 방향을 나타내는 벡터를 셰이더에 전달하여 그 방향으로만 블러 효과를 준다. 코드(MotionBlur.fsh)#ifdef GL_ESprecision lowp float;#endif varying vec2 v_texCoord; uniform vec2 u_stepSize; void main(){ vec4 color = vec4(0.0, 0.0, 0.0, 0.0); color += texture2D(CC_Texture0, v_texCoord + 4.0 * u_stepSize) * 0.06; color += texture2D(CC_Texture0, v_texCoord + 3.0 * u_stepSize) * 0.12; color += texture2D(CC_Texture0, v_..
cocos2d-x에서 셰이더롤 적용하는 방법ShaderCache에 셰이더를 등록하고 적용한다. 코드 GLProgram* shader = new GLProgram(); shader->initWithFilenames("SelectEffect.vsh", "SelectEffect.fsh"); shader->bindAttribLocation(GLProgram::ATTRIBUTE_NAME_POSITION, GLProgram::VERTEX_ATTRIB_POSITION); shader->bindAttribLocation(GLProgram::ATTRIBUTE_NAME_COLOR, GLProgram::VERTEX_ATTRIB_COLOR); shader->bindAttribLocation(GLProgram::ATTRIBUT..
원하는 결과물오브젝트가 선택됨을 나타내려고 주로 사용하는 방법이다. 방법shader를 이용해서 이미지의 외곽주변부의 fragment값을 조작하여 효과를 표현한다. 코드(Blur.fsh)#ifdef GL_ESprecision lowp float;#endif varying vec2 v_texCoord; uniform vec2 u_stepSize; void main(){ vec4 color = texture2D(CC_Texture0, v_texCoord); vec4 result = vec4(0.0, 0.0, 0.0, 0.0); vec2 r_stepSize = vec2(u_stepSize.x, -u_stepSize.y); result += texture2D(CC_Texture0, v_texCoord - -4.0..
sprite를 생성할 때 원본 이미지보다 큰 rect에 texture를 입혀서 생성해야 할 경우가 있다.이 때 원본 이미지를 늘려서 텍스쳐에 입히는데 이 옵션이 래핑(wrapping)옵션이다. - cocos2d-x 3.5에서는 default로 GL_CLAMP_EDGE로 되어있다. 래핑 종류별 설명GL_CLAMP_EDGE모서리 픽셀을 늘려서 확장시킨다. GL_CLAMP_BORDER원본 그대로 출력한다. GL_MIRRORED_REPEAT거울처럼 반전하면서 같은 이미지를 반복한다. GL_REPEAT바둑판식으로 이미지를 반복한다. 필요한 방식은 GL_CLAMP_TO_BORDER이므로 cocos2d-x 코드를 수정하였다. glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ..
- Total
- Today
- Yesterday
- 운영체제
- 드라마
- mongoDB
- SHADER
- winsock
- JSP
- 수학
- SOCKET
- database
- ue4
- ios
- DesignPattern
- scala
- C/C++
- swift
- SwiftUI
- Cocos2d-x
- Spring
- 데이터베이스
- OS
- game
- C
- 국내여행
- rxswift
- Git
- 알고리즘
- C++
- Java
- 자료구조
- machine learing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |