### 1. UTexture2D 클래스
`UTexture2D`는 Unreal Engine에서 텍스처 데이터를 관리하기 위해 사용되는 클래스입니다. 텍스처는 게임에서 모델에 입히는 이미지나 그림을 말합니다. `UTexture2D` 클래스는 2D 텍스처 데이터를 관리하는 역할을 하며, 이 클래스를 이용해서 텍스처와 관련된 다양한 작업을 수행할 수 있습니다.
### 2. 포인터(Type*)
C++에서 포인터(pointer)는 다른 변수나 객체의 메모리 주소를 저장하는 변수입니다. 이는 간접 참조(indirection)라고도 불리며, 포인터를 통해 해당 변수나 객체에 접근하거나 조작할 수 있습니다.
### 포인터 사용 예시
```cpp
UTexture2D* TexturePointer;
```
여기서 `TexturePointer`는 `UTexture2D` 객체의 메모리 주소를 가리키는 포인터입니다. `UTexture2D`는 일반적인 클래스 타입이고 `UTexture2D*`는 그 클래스에 대한 포인터 타입이 됩니다.
### 포인터의 장점
1. **동적 메모리 할당**: 포인터를 사용하면 런타임 중에 메모리 할당과 해제를 더 유연하게 관리할 수 있습니다.
2. **성능**: 큰 객체를 매번 복사하기보다는, 그 객체에 대한 포인터를 전달하면 더 효율적입니다.
3. **직접 메모리 접근**: 포인터를 사용하면 특정 메모리 위치를 직접 제어할 수 있습니다. 이는 특히 성능이 중요한 게임 개발에서 유용합니다.
### 포인터의 사용 예시(Unreal Engine에서)
1. **텍스처 로딩**: 포인터를 이용해 텍스처를 메모리에 로드하고 필요한 곳에서 접근할 수 있습니다.
2. **메모리 관리**: 여러 객체들이 동일한 텍스처를 참조해야 할 경우, 포인터를 사용하면 메모리 낭비를 줄일 수 있습니다.
### 코드 예시
```cpp
// 텍스처를 불러오거나 생성
UTexture2D* MyTexture = /* 텍스처 생성 또는 불러오는 함수 */;
// 텍스처를 사용하는 함수
void ApplyTexture(UTexture2D* Texture)
{
if (Texture)
{
// 텍스처 적용 로직
}
}
// 함수 호출
ApplyTexture(MyTexture);
```
여기서 `ApplyTexture` 함수는 `UTexture2D*` 타입의 포인터를 매개변수로 받아서 내부 로직을 수행합니다.
요약하자면, `UTexture2D*`는 `UTexture2D` 객체의 메모리 주소를 가리키는 포인터이며, 이를 통해 텍스처 데이터에 접근하고 조작할 수 있습니다. 이 포인터 타입은 특히 Unreal Engine과 같은 게임 엔진에서 메모리를 효율적으로 관리하고 성능을 최적화하는 데 중요한 역할을 합니다.
!-- 내가 완!전! 좋아하는 시인
喜也(희야) 이희숙
1964년 12월 20일
(음력 1963년 11월 22일)
경남 합천 출생
2002년 문예사조 등단
글벗문학회 회원
독도수호대 정회원
대구 거주
행복을 경영할 줄 아는 여자
제16회 전국문화사진공모전 초대작가 (달서구문화원)
출처: <http://poemlove.co.kr/m/bbs/board.php?bo_table=tb02&wr_id=3849>
!-- 다시는 펀딩북 출판 안하리 했던 마음이 요즘 조금 녹고 있음
아래는 관련 공지 글 초고
[비전공자를 위한 프로그래밍] 목차는 아래와 같습니다. 8월 31일까지 작업되어 진행 상황 공유용으로 출판사로는 전달했습니다. 출판사 전문가분의 의견을 듣고자 위함입니다. 현재 Chapter 6을 집필 중입니다. 마무리 후 Chapter 7까지 고려중이며, 초안 집필이 끝난 후에는 하나의 개념으로 설명 가능한 용어들을 모두 통합/통합한 이유를 적고 불필요한 내용들을 모두 더더욱 압축하는 작업을 거치려고 합니다. 안경을 압축하듯이 제 역할은 유지한 체, 내용은 압축하여 줄인 다음 가볍고 오래도록 볼 수 있는 서적이 되고자 합니다. 내용이 필요 없을 때 즈음되면 개정판을 내려고 합니다. 작업 순서는 제가 내용을 쓰고 SW업체 대표분이 내용을 이해하여 다시 씁니다. 그다음 국어국문학 작가분이 알아듣기 어려운 문장을 퇴고하고 교정합니다. 물론, 출판사 교정은 거칩니다. 교정 담당하실 분의 업무 스트레스는 많이 내려갈 거라 생각합니다.
[개발자가 알아야 할 비화]는 표지 디자인 및 내지 디자인, 문서를 보기 좋게 변환하는 작업이 진행 중입니다. - 디자인 작업이 이렇게 광범위할 줄 몰랐습니다. 견적서 받아보고 디자인 작업 비용이 비싸다고 했던 제가 너무 부끄럽더군요 - 집필 중 국내 유명 IT 교육센터 담당자 분과 내용 관련해서 이야기할 시간이 있었습니다. 너무 위험하지 않겠냐는 피드백을 주셨습니다. 걱정 안 해도 될 이유를 일일이 , 오래도록 설명하고 나니 고개를 끄덕이십니다. 참... 진실을 말하는데 걱정 안 해도 될 세상이 어서 빨리 왔으면 하는 생각이 들었습니다. 비화는 펀딩 말고 사실 분을 위해. 5만 원에 값을 책정했고 책에 인쇄될 거라고 하니, 요즘 누가 5만 원에 책을 사냐면서 성화셨습니다. 그러나 한 권 보내 달라고 하더군요. 회사 윗분께 드린다고 ^^; 수익금은 [함께하는 사랑밭]에 기부토록 하겠습니다. 큰 기업들의 회사 시스템도 좋은 방향성을 가지게 해 주고, 대한민국 IT도 깨끗하게 만들며 어려운 한국의 아이들을 돕는 데까지... 정말 괜찮은 일을 하고 있는 것 같습니다.
[C&JAVA]는 펜딩 상태입니다. JVM 소스 분석이 들어가는데 고도의 집중 시간 없이 진행하기는 어려운 부분입니다. 게다가 담당하고 있는 업무의 가짓수가 많아진 이유입니다. 첫권은 인쇄 프로세스를 탔고, 두 번째권은 마무리 단계라 세 번째 권에 대한 온전한 집중은 9월 말이 되어서야 가능할 것 같습니다. 기획 출판에 계약서가 9월 말로 되어 있어서 9월 말에 무릎 보호대를 작용해야 할 것 같습니다.(무릎 꿇기 用) 책이 많이 늦는다면 우선 환불을 진행하고 책은 무료로 보내 드리는 방법을 고려하고 있습니다. 독자분과의 약속도 중요하지만 제 IT 커리어도 달려 있어서 앞으로 이 업(業)으로 밥 먹고 살아야 하는데, 개떡 같은 책 내면 망하니까요 ^^
애까지 있는 아빠가 업데이트에 비루한 단어를 선택해서 죄송합니다. 다만, 저의 솔직한 생각이 구어체 용어를 타고 정확한 느낌으로 전달되었으면 하는 바람입니다.
이제 결실의 계절 9월입니다. 여기 제주는 어젯밤 기온, 또 새벽 산책을 나가보니 날씨가 많이 차가워졌습니니다. 무엇보다 중요한 것은 건강이니 환절기 감기 조심하시기 바랍니다.
이상 보고를 마칩니다.
하준호 드림.
- 아 래 -
Chapter 1. 프로그래밍이 뭐야?
프로그래밍 개념 잡기
프로그래밍을 해보자 <쉘(shell) 프로그래밍>
단어장 1
Chapter 2. 프로그램을 실행시켜 보자
Visual Studio 설치 (C/C++)
Path 설정
컴파일(Compile)/링크(Link)
C/C++ 프로그래밍
컴파일 과정
단어장 2
JDK / Eclipse 설치 (JAVA)
Path 설정
컴파일(Compile)/링크(Link)
JAVA 프로그래밍
Chapter 3. 포인터
기본개념
포인터 연산자
리틀 엔디안, 빅 엔디안
다중 포인터
배열 포인터
포인터 배열
동적 할당
함수 포인터
손 코딩 & 발 코딩
책에서 표현하는 방법
벤 다이어 그램
Chapter 4. Programming paradigm
프로그래밍에서 중요한 것
코딩능력
성실성
디자인 패턴
책임감
자료구조, 알고리즘
친화력
협동심
쉘 스크립트 작성 능력
배려심
포트폴리오
Chapter 5. Algorithm, Data Structure
알아야 할 용어
알고리즘이란?
디자인 패턴과 수학?
알고리즘을 잘한다는 것은?
절차 지향, 객체지향 프로그래밍?
객체지향이란?
추상화, API란?
스스로 결정하는 DS, ALGO 실력!
DS의 종류
원시 타입(Primitive Type)
배열(Array)
스택(Stack), 큐(Queue)
연결 리스트(LinkedList)
트리(Tree)
힙(Heap)
그래프(Graph)
해시(Hash)
ALGO의 종류
Chapter 6. 프로그래밍 공부 방법
수학을 먼저 공부해야 합니다.
EntryPoint를 찾아야 합니다.
DS(Data Structure)를 알아야 합니다.
원시 타입(Primitive Type) 찾기
배열(Array) 찾기
AOGO(Algorithm)을 짜기 위한 도구를 알아야 합니다.
연산자
산술 연산자
대입 연산자
증가 (++), 감소 (--) 연산자
관계 연산자
비트 연산자
Logical Operator(논리 연산자)
비트 연산자와 논리 연산자의 차이점
shift(이동) 연산자
조건 연산자(?:)와 instanceof 연산자
연산자 우선순위
!-- Embedded
벗어 날 수 없는...
BLOCK DIAGRAM |
XU4 is fully software compatible with XU3 ! But XU4 is more compact, more affordable and more expandable. What's different from XU3. Pros - Gbit Ethernet - More Stable Dual USB 3.0 host ports - More compact PCB size - More IO ports (I2S/I2C/GPIO) Cons - No USB OTG - No DP - No Audio CODEC - No Power Monitoring Sensors BOARD DETAIL |
PCB DETAIL |
출처: <http://www.hardkernel.com/main/products/prdt_info.php?g_code=G143452239825&tab_idx=2>
// CInternetSession* pSession = NULL;
// CHttpConnection* pHttpConnect = NULL;
// CHttpFile* pHttpFile = NULL;
// CString url = _T("/hash");
//
// try{
//
// //// HTTP 메소드별로 사용 가능
// pSession = new CInternetSession;
//
// CString strServerName = L"http://211.57.201.145";
//
// pHttpConnect = pSession->GetHttpConnection(strServerName, (INTERNET_PORT)1377, NULL, NULL);
//
// if(pHttpConnect == NULL) throw CString(_T("http connection failed!!!"));
//
// pHttpFile = pHttpConnect->OpenRequest(CHttpConnection::HTTP_VERB_GET, url);
//
// //pHttpFile->AddRequestHeaders(_T("HTTP/1.1\r\nAccept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*\r\nAccept-Language: ko\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.4; CNS_UA; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CNS_UA)\r\nAccept-Encoding: gzip, deflate\r\nProxy-Connection: Keep-Alive\r\n"));
//
//
////pHttpFile->AddRequestHeaders(_T("POST v1/voice/tts.bin HTTP/1.1\r\n"));
//////pHttpFile->AddRequestHeaders(_T("Host: openapi.naverlove.com\r\n"));
////pHttpFile->AddRequestHeaders(_T("User-Agent: curl/7.43.0\r\n"));
////pHttpFile->AddRequestHeaders(_T("Accept: */*\r\n"));
////pHttpFile->AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded\r\n"));
//////pHttpFile->AddRequestHeaders(_T("X-Naver-Client-Id: 123456789123456789\r\n"));
//////pHttpFile->AddRequestHeaders(_T("X-Naver-Client-Secret: 12345678\r\n"));
//
////CString strHeaders = CString(_T("Content-Type: application/x-www-form-urlencoded"));
//
////pFile->AddRequestHeaders(strHeaders);
//
//
////pFile->AddRequestHeaders("Accept: image/png,*/*;q=0.5");
////
////pFile->AddRequestHeaders("Accept-Language: zh-cn,zh;q=0.5");
////
////pFile->AddRequestHeaders("Accept-Encoding: gzip,deflate");
////
////pFile->AddRequestHeaders("Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7");
////
////pFile->AddRequestHeaders("Keep-Alive: 300");
////
////pFile->AddRequestHeaders("Connection: keep-alive");
////
////pFile->AddRequestHeaders("Cookie: Key=somevalue;domain=abc.com") ;
//
////pHttpFile->SendRequest();
//
// CString strLine;
//
// pHttpFile = (CHttpFile *)pSession->OpenURL(_T("http://211.57.201.145:1337/hash"));
// pHttpFile->ReadString(strLine);
// // pHttpFile->Close();
////cout << strLine << endl;
// MessageBox(strLine ,L"Msgbox",MB_OK);
//
// //pHttpFile->QueryInfoStatusCode(dwRet);
//
// // GET 방법으로 간단하게
//
// //pSession = new CInternetSession;
//
//
//
// //try {
// // // INTERNET_FLAG_RELOAD prevents page output being cached; potentially inaccurate
// // pFile = (CHttpFile*)session.OpenURL("http://www.mywebsite.com/Gui4UnexAuth.aspx", 0,
// // INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_RELOAD);
// // pFile->ReadString(strLine);
// // pFile->Close();
// // } catch(CInternetException* e) {
// // e->Delete();
// // }
//
// // delete pFile;
//
//
// }
// catch(CInternetException *m_pEx)
// {
// // m_pEx->ReprotError();
// m_pEx->Delete();
// }
//
// // result값 확인
// DWORD m_dwStatusCode;
// pHttpFile->QueryInfoStatusCode(m_dwStatusCode);
//
// cout << m_dwStatusCode << endl;
//
// // 객체 delete 부분
// if(pHttpFile)
// {
// delete pHttpFile;
// pHttpFile = NULL;
// }
// if(pHttpConnect)
// {
// delete pHttpConnect;
// pHttpConnect = NULL;
// }
// if(pSession)
// {
// pSession->Close();
// delete pSession;
// pSession = NULL;
// }
//
//
//
// //MessageBox(L"Done",L"Msgbox",MB_OK);
// cout << "done" << endl;
'3D world > Unreal Engine Plug-ins' 카테고리의 다른 글
AllowWindowsPlatformTypes (0) | 2020.06.17 |
---|---|
H.264 (0) | 2020.06.14 |
NDI (0) | 2019.09.12 |
unreal + rider (0) | 2019.03.13 |
D3D11RHI (0) | 2019.03.13 |
최근댓글