2009년 04월 23일
티스토리
하나 적선해주실 분 계시면 고맙겠습니다. (굽신)
^^;;
# by | 2009/04/23 21:59 | General | 트랙백 | 덧글(4)
# by | 2009/04/23 21:57 | General | 트랙백 | 덧글(6)
# by | 2009/04/15 22:13 | Nebula Device | 트랙백 | 덧글(0)
국내 최고의 게임분야 직무교육과정을 개발, 운영하고 있는 게임아카데미는
게임업계 경쟁력 강화를 위해 다음과 같이 직무교육과정 교육생을 모집하고 있습니다.
많은 신청 부탁드립니다.
'08년도 최고의 인기과정, 최고의 교육만족도,
국내 최고의 엔진전문가 저자 직강!!!
1. 과정명 : 오픈소스게임엔진교육과정 - Nebula Device2
(온오프라인 혼합과정)
2. 교육기간
- 오프라인 : 2009. 4. 17~4. 29 (월, 수, 금)
- 온라인 : 2009. 4. 17~5. 17 (1개월)
3. 교육비 : 20만원
4. 결재방법 : 카드 결재 및 현금 계좌이체
(카드결제는 직무과정 홈페이지에서 결재)
5. 할인 : 1사 2인이상 지원시 교육비 10% 할인
6. 특전 : 교재 제공, 저녁간식(샌드위치+음료), 다과제공,
게임아카데미 발간도서 최대 80%할인 제공
온라인과정 무료제공 (오픈소스게임엔진 온라인과정)
7. 자세한 사항은 게임아카데미 홈페이지(직무과정) 안내를 참고하시고 신청해주시기 바랍니다.
8. 문의 : 02-540-8194 (장광진 대리) / kjjang@kogia.or.kr
# by | 2009/04/12 16:07 | Nebula Device | 트랙백 | 덧글(2)
StreamReader는 ResourceLoader 클래스의 서브 클래스이며 리소스 파일을 스트리밍을 통해서 읽어 들이는 처리를 한다. 읽어 들일때에는 비동기적인 방법으로 읽어 들인다. 아래 소스에서 보듯이StreamModelLoader::SetupModelFromStream 함수에서 리소스 파일의 확장자에 따라 적절한ModelReader를 생성하고 생성한 ModelReader에서는 리소스 파일을 파싱해서 실제로 읽어 들이는 처리를 한다.
| bool StreamModelLoader::SetupModelFromStream(const Ptr<Stream>& stream) { n_assert(stream.isvalid()); n_assert(stream->CanBeMapped()); // first decide what ModelReader to use bool isLegacyFile = false; String fileExt = this->resource->GetResourceId().Value().GetFileExtension(); Ptr<ModelReader> modelReader; if (fileExt == "n3") { // Nebula3 binary format modelReader = (ModelReader*) BinaryModelReader::Create(); } else if (fileExt == "xml") { // Nebula3 XML format modelReader = (ModelReader*) XmlModelReader::Create(); } else if (fileExt == "n2") { // legacy Nebula2 binary format modelReader = (ModelReader*) N2ModelReader::Create(); modelReader->SetModelResId(this->resource->GetResourceId()); isLegacyFile = true; } else { n_error("StreamModelLoader: unrecognized file extension '%s' in '%s'!", fileExt.AsCharPtr(), this->resource->GetResourceId().Value().AsCharPtr()); return false; } |
| bool D3D9StreamMeshLoader::SetupResourceFromStream(const Ptr<Stream>& stream) { n_assert(stream.isvalid()); n_assert(this->resource.isvalid()); #if NEBULA3_LEGACY_SUPPORT if (this->resource->GetResourceId().Value().GetFileExtension() == "nvx2") { return this->SetupMeshFromNvx2(stream); } else #endif if (this->resource->GetResourceId().Value().GetFileExtension() == "nvx3") { return this->SetupMeshFromNvx3(stream); } else if (this->resource->GetResourceId().Value().GetFileExtension() == "n3d3") { return this->SetupMeshFromN3d3(stream); } else { n_error("D3D9StreamMeshLoader::SetupMeshFromStream(): unrecognized fileextension in '%s'\n",this->resource->GetResourceId().Value().AsCharPtr()); return false; } } |
SetupMeshFromNvx2에서는 Legacy::Nvx2StreamReader를 통해서 .nvx2 파일을 읽어 들이고 이것을 정점 버퍼와 인덱스 버퍼에 연결한다.
| bool D3D9StreamMeshLoader::SetupMeshFromNvx2(const Ptr<Stream>& stream) { n_assert(stream.isvalid()); Ptr<Legacy::Nvx2StreamReader> nvx2Reader = Legacy::Nvx2StreamReader::Create(); nvx2Reader->SetStream(stream); if (nvx2Reader->Open()) { const Ptr<Mesh>& res = this->resource.downcast<Mesh>(); n_assert(!res->IsLoaded()); res->SetVertexBuffer(nvx2Reader->GetVertexBuffer().downcast<CoreGraphics::VertexBuffer>()); res->SetIndexBuffer(nvx2Reader->GetIndexBuffer().downcast<CoreGraphics::IndexBuffer>()); res->SetPrimitiveGroups(nvx2Reader->GetPrimitiveGroups()); nvx2Reader->Close(); return true; } return false; } |
# by | 2009/03/28 09:37 | Nebula3 | 트랙백 | 덧글(0)
# by | 2009/03/27 21:25 | Nebula Device | 트랙백 | 덧글(0)