Irrlicht 에서 디바이스를 작성, 엔진의 루트 오브젝트라 중요함
IrrlichtDevice* createDevice(
E_DRIVER_TYPE deviceType = EDT_SOFTWARE,
const dimension2d<s32>& windowSize = dimension2d<s32>(640,480),
u32 bits = 16,
bool fullscreen = false,
bool stencilbuffer = false,
bool vsync = false,
IEventReceiver* receiver = 0,
const c8* sdk_version_do_not_use = IRRLICHT_SDK_VERSION
deviceType 디바이스의 타입을 설정합니다. 이하를 지정할 수 있습니다.
\EDT_NULL
EDT_SOFTWARE
EDT_BURNINGSVIDEO
EDT_DIRECT3D8
EDT_DIRECT3D9
EDT_OPENGL
windowSize 윈도우의 사이즈를 지정합니다.
bits bit심도를 지정합니다. (풀 스크린일 때만)
fullscreen 풀 스크린 모드로 기동할건지 안할건지 지정합니다. stencilbuffer stencilbuffer를 사용하는지 안할건지 지정합니다. vsync 수직동기(垂直同期)를 행할것인지 안할건지 지정합니다.
(풀 스크린일 때만)
receiver 이벤트를 받을 오브젝트를 지정합니다.
sdk_version_do_not_use SDK의 버전체크로 사용하는것이므로, 변경하지
않도록 해 주세요.
beginScene
그리기 시작임
bool beginScene(
bool backBuffer,
bool zBuffer,
SColor color
backBuffer color 파라메터에서 지정한 수치로 묘화 버퍼를 클리어
할지안할지를 지정합니다.
zBuffer Z버퍼를 클리어 할지 안할지 지정합니다.
color 묘화 버퍼를 클리어할 색을 지정합니다.
0xAARRGGBB로 지정하는 것도 가능합니다. 수치는 각각 0x00~0xFF로 표시합니다.
AA:알파치(무시됩니다.)
RR:적의 요소
GG:녹의 요소
S3DVertex
정점 정보를 가질 구조체
S3DVertex S3DVertex(
f32 x,y,z,
f32 nx,ny,nz,
SColor c,
f32 tu,tv
x,y,z 중점의 좌표.
nx,ny,nz 중점의 법선(normal). (면에 수직인 방면을 가르키고 있는 벡터)
c 중점 컬러.
tu,tv 텍스쳐의 좌표. 보통은 0.0~1.0의 수치를 지정합니다.
setTransform
월드 또는 투영변환한 뷰를 세팅
void setTransform(
E_TRANSFORMATION_STATE state,
const matrix4 & mat
state 이하의 상태를 지정합니다.
ETS_VIEW 뷰의 변환.
ETS_WORLD 월드의 변환
ETS_PROJECTION 프로젝션의 변환
ETS_TEXTURE_0 텍스쳐 0의 변환
ETS_TEXTURE_1 텍스쳐 1의 변환
ETS_TEXTURE_2 텍스쳐 2의 변환
ETS_TEXTURE_3 텍스쳐 3의 변환.
ETS_COUNT 사용하지 않는다.
drawIndexedTriangleList
S3DVertex 로 설정된 인덱스를 이용해 삼각형을 그림
void drawIndexedTriangleList(
const S3DVertex* vertices,
u32 vertexCount,
const u16* indexList,
u32 triangleCount
)
vertices 중점배열로의 포인터
vertexCount 배열로의 중점수.
indexList 인덱스 배열로의 포인터.
addCameraSceneNode
카메라 추가
ICameraSceneNode* addCameraSceneNode(
ISceneNode* parent = 0,
const vector3df& position = vector3df(0, 0, 0),
const vector3df& lookat = vector3df(0, 0, 100),
s32 id = -1
parent 카메라의 부모입니다. 부모를 설정한 경우 부모가 움직이면 카메라도 움직입니다.
position 카메라의 위치입니다.
lookat 카메라가 보는 위치입니다.
getTexture
텍스쳐 파일 읽기
ITexture* getTexture(
IReadFile* file
file 불러온 텍스쳐를 설정합니다. 불러오기에 실패한 경우는 0을 돌려줍니다.
텍스쳐포맷에는 이하의 것을 지정 할 수 있습니다.
Adobe Photoshop (.psd)
JPEG File Interchange Format (.jpg)
Portable Network Graphics (.png)
Truevision Targa (.tga)
Windows Bitmap (.bmp)
addLightSceneNode
빛을 추가한다.
ILightSceneNode* addLightSceneNode(
ISceneNode* parent = 0,
const vector3df& position = vector3df(0, 0, 0),
SColorf color = SColorf(1.0f, 1.0f, 1.0f),
f32 radius = 100.0f,
s32 id = -1
parent 광원의 부모를 설정합니다. 부모가 움직이면 광원도 움직입니다.
position 광원의 위치를 설정합니다.
color 광원의 색 (ディフューズカラー[..?])를 설정합니다.
환경(ambiento) 컬러나 スペキュラ(..?)컬러는getLightData()에서 설정합니다.
radius 광원의 각도를 설정합니다.
블랜딩 처리
ex) Material.ZBuffer = false // Z 버퍼 사용 안함
이미지에 알파 값이 있다면 EMT_TRANSPARENT_ALPHA_CHANNEL 을 쓴다.
유효한 수치 0x81 이고 이 이상의 알파값은 수치에 대응하여 블랜딩된다.
0x80 이하의 경우에는 투명으로 된다.
Z 버퍼는 사용하도록 한다.
ex) Material.ZBuffer = true // Z 버퍼 사용
정점 정보에 있는 알파값을 사용 할땐 EMT_TRANSPARENT_VERTEX_ALPHA 을 쓴다.
텍스쳐를 위한것이기 때문에 텍스쳐가 없으면 무의미하다.
Z 버퍼는 사용한다.
ex) Material.ZBuffer = true // Z 버퍼 사용