게임에서 마우스가 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와 비율이 맞지 않으면 두 값이 다르다.
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..
SpriteBatchNode란? 하나의 sprite를 여러번 그릴 때 유용하다 (tile맵)draw call을 줄여서 성능을 향상 시킨다여러 개의 sprite를 한번에 이동 가능 // 15.06.14 추가// 실시간으로 sprite를 만들어서 거기다가 sprite데이터들을 저장하고, 그렇게 생성된 하나의 sprite를 그리는 듯 구현 // CCLayer > CCSpriteBatchNode > CCSprite 순으로 구현 CCSpriteBatchNode *batch = CCSpriteBatchNode::create("file.png");this->addchild(batch); // 1CCSprite *spr1 = CCSprite::create("file.png"/*, CCRect(0,0,100,100)*/..
- Total
- Today
- Yesterday
- swift
- SHADER
- Spring
- 데이터베이스
- 수학
- C++
- OS
- Git
- machine learing
- SOCKET
- 국내여행
- game
- mongoDB
- database
- ue4
- scala
- rxswift
- 자료구조
- C
- JSP
- ios
- C/C++
- DesignPattern
- 드라마
- Java
- 알고리즘
- SwiftUI
- Cocos2d-x
- winsock
- 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |