Parallelpiped

사용자 삽입 이미지
void Parallelpiped::init()
{
glm::vec3 pu = p + u;
glm::vec3 pv = p + v;
glm::vec3 pw = p + w;
glm::vec3 puv = p + u + v;
glm::vec3 pvw = p + v + w;
glm::vec3 puw = p + u + w;
glm::vec3 puvw = p + u + v + w;

// Front face
vbo.addData(&p[0], sizeof(glm::vec3));
vbo.addData(&pu[0], sizeof(glm::vec3));
vbo.addData(&puw[0], sizeof(glm::vec3));
vbo.addData(&p[0], sizeof(glm::vec3));
vbo.addData(&puw[0], sizeof(glm::vec3));
vbo.addData(&pw[0], sizeof(glm::vec3));

// Back face
vbo.addData(&puv[0], sizeof(glm::vec3));
vbo.addData(&pv[0], sizeof(glm::vec3));
vbo.addData(&pvw[0], sizeof(glm::vec3));
vbo.addData(&puv[0], sizeof(glm::vec3));
vbo.addData(&pvw[0], sizeof(glm::vec3));
vbo.addData(&puvw[0], sizeof(glm::vec3));


// Left face
vbo.addData(&pv[0], sizeof(glm::vec3));
vbo.addData(&p[0], sizeof(glm::vec3));
vbo.addData(&pw[0], sizeof(glm::vec3));
vbo.addData(&pv[0], sizeof(glm::vec3));
vbo.addData(&pw[0], sizeof(glm::vec3));
vbo.addData(&pvw[0], sizeof(glm::vec3));


// Right face
vbo.addData(&pu[0], sizeof(glm::vec3));
vbo.addData(&puv[0], sizeof(glm::vec3));
vbo.addData(&puvw[0], sizeof(glm::vec3));
vbo.addData(&pu[0], sizeof(glm::vec3));
vbo.addData(&puvw[0], sizeof(glm::vec3));
vbo.addData(&puw[0], sizeof(glm::vec3));


// Top face
vbo.addData(&pw[0], sizeof(glm::vec3));
vbo.addData(&puw[0], sizeof(glm::vec3));
vbo.addData(&puvw[0], sizeof(glm::vec3));
vbo.addData(&pw[0], sizeof(glm::vec3));
vbo.addData(&puvw[0], sizeof(glm::vec3));
vbo.addData(&pvw[0], sizeof(glm::vec3));


// Bottom face
vbo.addData(&pv[0], sizeof(glm::vec3));
vbo.addData(&puv[0], sizeof(glm::vec3));
vbo.addData(&pu[0], sizeof(glm::vec3));
vbo.addData(&pv[0], sizeof(glm::vec3));
vbo.addData(&pu[0], sizeof(glm::vec3));
vbo.addData(&p[0], sizeof(glm::vec3));


numVertices = 36;


// create VBO
vbo.createVBO();
vbo.bindVBO();
vbo.uploadDataToGPU(GL_STATIC_DRAW);


// create a VAO
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);


isLoaded = true;
}

HW1

그래픽스 프로그래밍(321190) 실습 #1


– 2D graphics & interaction


(321190)


강사: 박경신


2014년 3월 21일


 


제출 방법: 2014년 4월 11일(금) 밤12시까지


(e-learning 강의실에 실행파일과 소스코드와 리포트를 전부 “CG14_학번이름_숙제1.zip”으로 묶어서 제출하도록 합니다. 또한, 소스코트 폴더에 .cpp만 담지 말고 비주얼 스튜디오에서 만든 프로젝트 폴더에서 생성한 모든 것을 첨부 바랍니다.)


 


참고자료: lab2
사용자 삽입 이미지


사용자 삽입 이미지사용자 삽입 이미지
0. Display window
크기는 600 x 600로 perspective(45, 1, 1, 100)를 사용한다.


 


1. 기본 도형 (Geometry) 클래스를 만든다. (10점)


-Quad, Circle, Triangle, Hexagon, Octagon, 등등 (네모, 원, 삼각, 육각, 팔각형 모양의 카페트) 클래스들 중 본인이 새로운 도형 3개 이상 작성


-Geometry 클래스는 각 도형 클래스들에 대한 추상 클래스


-Geometry에서 상속받은 Quad, Circle, Triangle, Hexagon, Octagon, etc


클래스는 네모, 원, 삼각, 육각, 팔각형 모양을 그리는 클래스이다.


 


2. 본인의 이름으로 “꽃밭” 로고를 만든다. (40점)


–로고는 반드시 하나씩 자라나는 개체이어야 한다.


-GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, GL_LINE_STRIP 등 여러 개의


다른 기하학적 기본요소들을 반드시 사용해본다.


–다양한 기하 속성 (attributes, 즉 color, line width, etc)을 이용하여, 로고 주변에 여러 가지 재미있는 디자인을 추가한다.


–수학적인 공식 또는 기본색이나 모양을 변형하여 “날아다니는 잠자리, 나비, 풍선, 각종 캐릭터” 등을 만든다.


 


3. 메인 프로그램을 작성한다. (10점)


-keyboard


-spacebar-key를 누르면, 움직이는 로고를 다시 처음부터 볼 수 있다.


-q-key 또는 ESC-key를 누르면, 프로그램을 종료한다.


 


4. 창의성, 소스코드 주석처리, 리포트 (40점)

glm library installation

glm-0.9.5.2 라이브러리 설치
1. glm는 아래 파일을 다운 받아 unzip해 주고, glm 디렉토리안에 들어가서 glm 디렉토리를 아래와 같이 복사해줍니다.

glm-0.9.5.2.zip
사용자 삽입 이미지
2. C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include 폴더에 glm 폴더 전체를 붙혀넣기 하면 아래 그림과 같이 gl 아래에 glm이 생성됩니다.사용자 삽입 이미지3. C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\glm 내부는 아래 그림과 같습니다.사용자 삽입 이미지4. glm을 제대로 설치하지 않으면, 아래와 같은 에러가 발생합니다.사용자 삽입 이미지