본문 바로가기

프로그래밍/일리히트

2. 삼각형 띄우고 색깔입히기

참.. 네이버카페에 번역강좌올려주시는분 참 고마울따름
여튼 이번에 하면서 삼각형 좌표입히기가 역시도..
난해하진않지만 성가셨다 ㅋ

#include <windows.h>
#include <irrlicht.h>
#pragma comment(lib, "Irrlicht.lib")

//네임스페이스를 미리지정해서 매번 긴 이름을 기술하는것을 피한다.
using namespace irr;
using namespace core;
using namespace video;
using namespace scene;

void makeScene(IVideoDriver *driver)
{
 matrix4 mat; //d3d의 MATRIX와 같다.
 
 SMaterial Material;
 Material.Lighting = false; //라이트는 없이간다.
 driver->setMaterial(Material); //재질값을 넣주는거겟지.
 
 //삼각형작성
 u16 triList[] = {0,1,2};
 //이 S3DVertex구조체는 xyz좌표, nxnynz의 법선값,컬러,텍스쳐좌표가 들어있다.
 S3DVertex triVer[3];

 triVer[0] = S3DVertex(0,1,0, 0,0,0, SColor(1,255,0,0), 0,0);
 triVer[1] = S3DVertex(1,-1,0, 0,0,0, SColor(1,255,0,0), 0,0);
 triVer[2] = S3DVertex(-1,-1,0, 0,0,0, SColor(1,255,0,0), 0,0);
 
 mat.setTranslation(vector3df(-2,0,0));
 driver->setTransform(ETS_WORLD, mat); //윌드에 반영
 driver->drawIndexedTriangleList(triVer, 3, triList, 1);

 

int main()
{
 // d3d와 마찬가지로 최초 디바이스 설정
 // 어떤 드라이브? 윈도우사이즈? 풀스크린 on off?,

 IrrlichtDevice *device = createDevice(EDT_OPENGL, dimension2d<s32>(640,480),16, false, false, false, false);
 //디바이스타입,윈도사이즈, bit심도, 풀스크린?, 수직동기?(풀스크린때만), 이벤트받을 오브젝트?

 // 이 드라이브라는것을 그림그리는 화가로 생각한다. 화가가없으면 그림그리는것도 불가능
 IVideoDriver *driver = device->getVideoDriver();

 //이건 윈도우 타이틀 설정이라고 보면 되겠다.
 device->setWindowCaption(L"Hello Irrlicht");

 //신매니저를 설정하고 카메라를 추가한다 (보기위해서)
 ISceneManager* smgr = device->getSceneManager();
 smgr->addCameraSceneNode(0, vector3df(0,0,-5), vector3df(0,0,0));
 //카메라의 부모?, 카메라위치, 카메라보는위치, 카메라의 아이디(생략)


 //run은 윈도가 실행해 있는 동안이라 생각하고
 while(device->run())
 {
  //d3d처럼 begin과 end사이에서 렌더해주면 되겠다. 버퍼클리어, z버퍼를 클리어?, 바탕색지정
  driver->beginScene(true, true, SColor(0,0,0,255));
  makeScene(driver);
  smgr->drawAll();

  driver->endScene();
 }

 //뒷정리
 device->drop();
 return 0;
}