본문 바로가기

C++(oF)

비연결형 소켓 OF (C++) 편 총 3개의 Layer로 구성됨 16 byte : 머신, 혹은 App 을 구별할 GUID(UUID)1 byte : 0 ~ 255 까지의 message type 분류data bytes : 실제 데이터 * c# 용 비연결형 udp 소켓은 ( http://yamecoder.tistory.com/367 ) Communicaotr.h 싱글톤 Singleton 는 ( http://yamecoder.tistory.com/368 )#pragma once /** * [ Udp Communicator ] * * @author yamecoder * @version 17/02/24 */ #include "Singleton.h" #include "ofxNetwork.h" #include "ofMain.h" class Commun.. 더보기
Generic Singleton Base Class 출처 : http://vallista.tistory.com/entry/1-Singleton-Pattern-in-C #pragma once //http://vallista.tistory.com/entry/1-Singleton-Pattern-in-C template < typename T > class Singleton { protected: Singleton() { } virtual ~Singleton() { } public: static T * GetInstance() { if (m_pInstance == nullptr) { m_pInstance = new T; } return m_pInstance; } static void DestoryInstance() { if (m_pInstance) { delet.. 더보기
중국어 , 한국어 완벽지원 addon , ofxFontStash ofxFontStashhttps://github.com/armadillu/ofxFontStash 예제를 보면 직접 코드에 중국어 등을 입력 하여 출력 하였지만, Visual C++ 2015 에서의 cpp 안에 직접 작성한 문자열이 UTF8을 정확히 읽지 못하는것으로 예상, 그래서 외부의 Txt을 불러와 랜더링을 하였다. #include "ofApp.h" //-------------------------------------------------------------- void ofApp::setup() { //ofEnableAlphaBlending(); ofSetVerticalSync(true); ofSetFrameRate(60); ofBackground(22, 22, 22, 255); unicodeFo.. 더보기
Visual Studio 2015 에서 Icon 바꾸기 이미지 따라 하면 됨 1. http://icoconvert.com/image_to_icon_converter/ 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 더보기
libVLC 를 이용한 캡처장치 수신 이전글 참고 : http://scripter.co.kr/354 aaa 위에 것은 캡처 카드를 수신 한 것이고, 아래 것은 웹캠을 수신 한 것이다. libVlc 를 이용 하여 캡처장치를 열때, 약간의 딜레이가 발생 할 수 있는데, 원인은 바로 사운드 이다. 사운드 장치를 none 으로 바꾸도록 설정 한 다음 이용 하면 레퍼런스 프로그램 수준으로 딜레이가 없어진다. 코드 : https://github.com/jjongun/ofxAddons/tree/master/work_addons/ofxVlcDShowGrabber [문제점]1) 간혹 play 할때 에러가 난다.2) ( 어플리케이션을 종료 하거나 할때 ) 장치가 간혹 잘 종료 되지 않아 다음 회차에 사용을 못할 경우가 있다. 더보기
보다 높은 퍼포먼스를 위한 LIBVLC 사용 이전글 참고 : http://scripter.co.kr/354 기존에 작성되었던 https://github.com/jnakanojp/ofxVLCVideoPlayer 약간의 문제를 포함 하고 있었다. 1. 불필요 하게 class가 2개 였다.2. 컬러포멧은 RGBA, 즉 4바이트를 할당하게 하여 퍼포먼스에 문제가 있었다.3. 다소 불필요한 thread lock, unlock 으로 인한 퍼포먼스 저하가 있었다( 어떤 낮은 시스템에서는 필요 할 수 있다. ) 이점들을 해결 하여 새롭게 작성 하였다. https://github.com/jjongun/ofxAddons/tree/master/work_addons/ofxVlcMediaPlayer/src 아울러 발견된 사실은, 1. libvlc.dll 에 따라 vlc .. 더보기
Poco 를 이용한 날짜 계산 #include "ofApp.h" #include "Poco\Timespan.h" #include "Poco\DateTime.h" using namespace Poco; //-------------------------------------------------------------- void ofApp::setup(){ Timespan _fewDays(3, 0, 0, 0, 0); // 3일 DateTime _today(2016,1,1); DateTime _before = _today - _fewDays; DateTime _ago = _today + _fewDays; cout 더보기
[of] LIB VLC 사용하기 0. 왜 VLC 인가? 우선 윈도우용 0.9.X(3) 까지 의 내장된 ofVideoPlayer는 극히 성능이 저질이다. 720P 정도도 온전한 재생이 힘들다.물론 대안으로 HAP 이 있다. 퍼포먼스는 보장 하지만 HAP 영상파일 자체는 매우 파일이 거대? 하며 용량이 무압축에 가깝다. 퍼포먼스를 위해 감내해야 하는 비용이 상당하다. 또한 윈도우용 WMF 코덱을 이용하는 방법이 있다. 하지만 보다 범용적이고, 그래픽 성능을 모두 발휘 할 수 있는 VLC는 잘 다루면 스트리밍 서버/ 클라이언트 까지 구현이 가능 하며, 호환성이 좋기 때문에 응용하기에 따라 맥, 리눅스 에서도 무사히 사용이 가능 하다. 심지어 관련 정보도 많이 있다. 1. vlc 를 다운 받는다. 대상 버전은, 현재 안정 버전인 2.0.5 이.. 더보기
Blur쉐이더 , Desktop 용 원본은 https://www.shadertoy.com/view/4lXXWn 이다.하지만 OF용으로 몇몇것들이 맞지 않아 수정을 해야 했다. 결과물 상세 이미지 쉐이더 1번에 최대한 효과적인 블러를 만들어야 겠다는 목표로.. #define STRINGIFY(A) #A ofImage image1; ofImage boy; ofShader shader1; //-------------------------------------------------------------- void ofApp::setup(){ //원본 : https://www.shadertoy.com/view/4lXXWn string shaderProgram = STRINGIFY( uniform sampler2DRect iChannel0; unif.. 더보기
Desktop 과 IOS(openGLES2.0) 의 쉐이더 텍스처 기본 시작 코드 Desktop 코드 #define STRINGIFY(A) #A ofImage image1; ofShader shader1; //-------------------------------------------------------------- void ofApp::setup(){ string shaderProgram = STRINGIFY( uniform sampler2DRect tex0; void main(void) { vec2 pos = gl_TexCoord[0].st; gl_FragColor = texture2DRect(tex0 , pos); } ); shader1.setupShaderFromSource(GL_FRAGMENT_SHADER , shaderProgram); shader1.linkProgram.. 더보기
[IOS] 아이폰의 카메라 기능을 모두 사용 하기 아이폰에서 OF 를 통하여 카메라를 사용 할때 ofVideoGrabber 를 사용하면 fps 가 현저히 떨어진다 (0.9.3 의 경우) 따라서 이건 사용 하지 못하고 [ AVFoundationVideoGrabber ] 를 사용 하여야 한다. 아쉽게도 직접 그리는 방법은 제공 되지 않고 ofImage로 픽셀을 복사 하여 draw 하면 된다. 그런데 아쉽게도 of에서 제공하는 [ AVFoundationVideoGrabber ] 는 아이폰 카메라의 focus , torch , white balance 의 기능을 제어하지 못하게 되어 있다. 하지만 objective-c 를 호출 하여 해결 할 수 있다. 또한 아이폰 카메라 뷰의 "사진" 모드와 다소 비율이 다른데 이것은 AVFoundationVideoGrabbe.. 더보기
CLM Framework with (TBB) on openFrameworks ..(아직 포스팅 안됨).. 더보기
간단한 다각형의 HitTest ... 더보기
[초간단] OF윈도우 리사이즈 막기 #include "ofMain.h" #include "ofApp.h" //======================================================================== int main( ){ ofGLFWWindowSettings settings; settings.width = 1024; settings.height = 1024; settings.windowMode = OF_WINDOW; settings.resizable = false; // 리사이즈 셋팅 ofCreateWindow(settings); //ofSetupOpenGL(&window , 600,768,OF_WINDOW); // 더보기
OF로 만든 VR 비디오 뷰어. 와... 배경음악 저작권 찾아내는게 기술이다.. 더보기
ARToolkit5 새로운 패턴 적용 하기 [Windows] 1. 사용 버전과 동일한 패키지 다운로드 하기 : http://artoolkit.org/download-artoolkit-sdk 2.. 다운로드 후 설치 3. bin 위치로 이동 [기본) C:\Program Files (x86)\ARToolKit5\bin ] 4. mk_patt.exe 실행 5. 카메라세팅은 디폴트로 (보통 웹캠의 경우... ) 한다면 그냥 엔터. 6. 간단한 카메라 프리셋 7. 카메라를 통해 마커 노출 영역이 잡힌다면, 영역을 마우스 좌클릭, 8. 콘솔창으로 이동 하여 세이브 경로 지정 - 만약 에러(error) 가 난다면, 절대 경로 부터 입력 예) c:/temp/ex.pat 9. 세이브 파일을 황용. 더보기
OF를 유틸리티 프로그램으로 사용하기 OpenFrameworks 는 훌륭한 그래픽 프레임워크인 동시에 POCO 와 BOOST 또는 네트워크 , 이미지 처리등 비주얼에 관한 기능을 구지 제외 하더라도 꾀 생산성 있는 프레임 워크임에 분명하다. 특히 ofFile관련 클래스들을 이용하면 c# 응용 프로그램으로 처리하는 간단한 파일 처리, 등을 동일한 생산성으로 더 높은 퍼포먼스로 응용 프로그램을 만들수 있다.ofxAddos 에도 XML , JSON 등의 라이브러리를 이용 할 수 도 있다. 그러기 위해선 main.cpp 에 약간의 준비 과정이 필요 하다.#include "ofMain.h" #include "ofApp.h" #include "ofUtils.h" // 추가 //==========================================.. 더보기
[OF] Visual Studio 2015 Community 에서 Icon 바꾸기 Community 버전 이라 그런지 딱히 리소스 이미지 파일을 수정 할 수 없다. 1. 아이콘으로 사용할 이미지 확보 1) https://thenounproject.com/2) https://design.google.com/icons/3) http://simpleicon.com/등등 여러가지 2. 온라인 아이콘 컨버터 이용 ( http://icoconvert.com/ )1) 파일을 선택 한후 [Upload] 버튼을 누른다.2) 아래의 설정 처럼 모든 사이즈를 선택 한다.3) [Convert] 클릭 및 다운로드 3. 아이콘 파일을 프로젝트 폴더로 복사 및 파일명 교체1) 파일을 복사 하여 icon_debug.ico 와 icon.ico 로 용도를 나누어 2개의 파일을 만들자.2) 프로젝트 폴더 (.sln 파.. 더보기
ofDrawBitamp(...) 의 텍스트 렌더링 사이즈 알아내기 각 Char 당 가로 8pt , 세로 11pt 로 계산 하면 딱 맞다. 물론 대문자의 경우 높이가 7pt 이지만 소문자의 j p q y 등과 같은 아래로 내려 오는 문자를 포함 하면 11pt 로 계산 하는것이 맞다. 또한 공백 역시 7pt 폭을 유지 했다. - 추가 내용 관련 내용을 OF 포럼에 문의 하고 답변을 달았더니, roymacdonald님 이 깔끔하게 정리 해줌. https://forum.openframeworks.cc/t/how-to-get-size-of-ofdrawbitmapstring/22578/6 ofRectangle getBitmapStringBoundingBox(string text){ vector lines = ofSplitString(text, "\n"); int maxLineLe.. 더보기
openFrameWorks 에서 FFMPEG 사용하기 :: 준비단계 참고 사이트 : http://aslike.egloos.com/category/%E2%94%94%20FFMPEG FFMPEG 를 openFrameWorks 0.9 와 Windows Visual Studio 2015 환경에 맞추어 보는 과정을 기록 함. 1. FFMPEG 다운 1) 이동 : http://ffmpeg.zeranoe.com/builds/2) [ Download FFmpeg git-588e2e3 32-bit Shared ] 와 [ Download FFmpeg git-588e2e3 32-bit Dev ] 를 다운 받음-> Shared 와 Dev 둘다 필요 하다.3) 압축 파일을 (권장 사항) C:/FFmpeg/ 에 풀어 정리 한다. 아래는 간편한 사용을 위해 본인이 만든 폴더 구조를 그대로 분할 압.. 더보기
ofXml 간단 사용법 #include "ofApp.h" #pragma region names vector names({ "Merissa Canney", "Ha Gandee", "Mercedes Shimmin", "Helaine Axley", "Daniell Ory", "Melodie Hossain", "Tanya Blaisdell", "Deloris Liles", "Ellsworth Mays", "Latesha Twilley", "Kizzie Mcneely", "Neva Verduzco", "Queenie Gammill", "Hai Boothby", "Arlette Duley", "Milford Shultis", "Emerita Bonk", "Johanne Mcclinton", "Suzann Drye", "Eloisa Cam.. 더보기
InClass GLSL Shader , 클래스 코드 안에 쉐이더 코드를... #define STRINGIFY(A) #A //메크로 선언 ofShader shader; //-------------------------------------------------------------- void ofApp::setup() { string shaderstr = STRINGIFY( #version 150\n //버전 텍스트 라인을 \n으로 리터럴 uniform float value0; //프로퍼티 선언 out vec4 outputColor; void main() { float windowWidth = 1024; float windowHeight = 768; float r = gl_FragCoord.x / windowWidth; float g = gl_FragCoord.y / windowH.. 더보기
In Class Static 와 Singleton C++ 에서 클래스 안의 Static 필드를 사용하기 위해서 한가지 주의해야 할 항목이 있다. StaticExample.h#pragma once #include #include using namespace std; class StaticExample { private: static map sampleMap; public: static void CheckContainKey(int key); } StaticExample.cpp#include "StaticExample.h" map StaticExample::sampleMap; // 이 부분이 없으면 LNK2001 , LNK1120 에러가 난다. void StaticExample::CheckContainKey(int key) { int already_count.. 더보기
람다 콜백 , std::function<void()> 이용한 DelayCall 람다 , 콜백 관련글 http://scripter.co.kr/325http://scripter.co.kr/326 std::function 를 이용하여콜백 함수를 전역의 변수화 하여 다른 메서드에서 호출 하는 타이밍을 조절 한다. #pragma once ofxDelayCall.h #include "ofEvents.h" #include "ofUtils.h" class ofxDelayCall { private: float interval = 0; float startTime = 0; std::function callback; void StartTimer(); void StopTimer(); void update(ofEventArgs &e); public: ~ofxDelayCall(); void DelayCal.. 더보기
ofEvents() 이벤트 우선순위 별도의 클래스에 ofApp.cpp 와 같은 이벤트를 만들어 수신 할 수 있는데, 이때, 이벤트 수신의 순위를 지정 할 수 있다. 참고 : http://scripter.co.kr/289 ofApp.cpp #include "ofApp.h" #include "SomeObject.h" //-------------------------------------------------------------- void ofApp::setup(){ /* 본문의 Draw 이벤트는 우선순위가(Event priority value) 100 이고, 이것을 기준으로 이벤트 우선순위를 정하는데, 값이 높을 수록 최상단에 위치함. 값이 동격일 경우 생성 순서에 의하여 결정됨. */ DrawObject* so1 = new DrawObje.. 더보기
ofxTrueTypeFontUC 를 이용한 한글 출력 (0.9.0) 1. addon download ofxTrueTypeFontUC : https://github.com/hironishihara/ofxTrueTypeFontUC 2. 0.9.0 에서 적용하기1) ofxTrueTypeFontUC.cpp 의 include 수정 (13줄) " /freetype/ " 삭제 #include "freetype2/freetype/freetype.h"#include "freetype2/freetype/ftglyph.h"#include "freetype2/freetype/ftoutln.h"#include "freetype2/freetype/fttrigon.h" 을 #include "freetype2/freetype.h"#include "freetype2/ftglyph.h"#include .. 더보기
[작성중] FTGL 과 한글Automata 를 이용한 한글입력 http://scripter.co.kr/328 에 에드온을 이용한 한글 출력 방법이 있습니다. 본 포스트는 아직 작성중 입니다. This Post is not completed.(밥벌이와 상관이 없어서, 짬 날때 마다 합니다. 언제 업데이트 될지는 모릅니다.) * 필요한 리소스한글 렌더링 라이브러리 : ofxFTGLFont ( http://yamecoder.tistory.com/?page=2 )한글 오토마타 : ( http://srctalk.imfree.co.kr/view.ife?seq=615 ) * 필요한 사전 지식문자열 인코딩 변환 : http://icartsh.tistory.com/13#recentTrackbackArray to string : http://stackoverflow.com/quest.. 더보기
oF 에서 FTGL 을 통한 한글 출력 해당하는 에드온은 https://github.com/Flightphase/ofxFTGL이다. FTGL 은 유니코드를 사용함으로 폰트만 있다면, 운영체제에서 지원하는 모든 문자를 표현 할 수 있다. #include "ofApp.h" #include "ofxFTGLFont.h" ofxFTGLFont font; //-------------------------------------------------------------- void ofApp::setup(){ font.loadFont("batang.ttc" , 32 ); } //-------------------------------------------------------------- void ofApp::draw(){ font.drawString(L".. 더보기
Xcode 에서 Homebrew 를 통해 OpenCv 설치 하기 http://www.theworldneedsmoredreamers.net/using-opencv-2-with-os-x-hello-world/ 더보기
[OpenCv] Static 으로 빌드하여 배포 환경에 맞추기. (별도의 DLL 필요없음) OpenCv 를 빌드 하고 배포 하려면 배포컴퓨터에 OpenCv를 설치하고 환경 변수를 맞춰 주거나, DLL 들을 함께 배포 하여야 한다.솔루션 크기도 커지고 여간 불편한것이 아니다. 그래서 다크프로그래머[http://darkpgmr.tistory.com/50] 님의 글을 보고 Static 빌드를 시도해 봤다.Static 빌드를 하면, 배포 컴퓨터에 별도의 추가 작업 없이 실행이 가능하다. 1. 프로젝트 속성 /MT , /MTd 로 바꾸기 (/MTd 는 디버그 용 이다.) 2. 프로젝트 Path 설정1) C/C++ -> General -> Additional Include Directories => [C:\opencv\build\include] 추가2) Linker -> General -> Additio.. 더보기