HW1

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


– 2D graphics & interaction


(321190)


강사: 박경신


2013326



9336905146.hwp제출 방법: 2013412(금) 12시까지


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


  참고자료: moglclass_starter.zip


  0. Display window 크기는 600 x 600perspective(45, 1, 1, 100)를 사용한다.


 1. 기본 도형 (Geometry) 클래스를 만든다. (10)
-Quad, Circle, Triangle, Hexagon, Octagon, 등등 (네모, , 삼각, 육각, 팔각형 모양의 카페트) 클래스들 중 3
개 이상 작성
-Geometry
클래스는 각 도형 클래스들에 대한 추상 클래스
-Geometry에서 상속받은 Quad, Circle, Triangle, Hexagon, Octagon, etc 클래스는 네모, , 삼각, 육각, 팔각형 모양을 그리는 클래스이다.


 2. 자기 자신의 이름 로고를 만든다. (20)
-3차원의 자기 자신의 이름로고를 만든다
.
로고는 반드시 움직이는 개체이어야 한다
.
-GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, GL_LINE_STRIP 등 여러 개의 다른 기하학적 기본요소들을 반드시 사용해본다
.


3. 다양한 기하 속성 (attributes, color, line width, etc)을 이용하여, 로고 주변에 여러 가지 재미있는 캐릭터 디자인을 추가한다. (20)
-3차원의 자기 자신을 표현하는 캐릭터
를 만든다
수학적인 공식 또는 기본색이나 모양을 변형하여 날아다니는 잠자리, 나비, 풍선, 각종 캐릭터등을 만든다.


4. 메인 프로그램을 작성한다. (10)
-keyboard
-spacebar-key를 누르면, 움직이는 로고를 다시 처음부터 볼 수 있다
.
-q-key 또는 ESC-key를 누르면, 프로그램을 종료한다. 


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

HW0 (Due by 2013/03/21)

HW0 – GLM 라이브러리를 사용하여 정점과 색버퍼를 지정한 color triangle 그림을 그려온다~
/// colortriangle.cpp에서 아래와 같이 추가 수정해본다.



#include <glm/glm.hpp>
#include <vector>


std::vector<glm::vec4> vertexColors;
std::vector<glm::vec4> vertexPositions;

void SetData()
{
 vertexColors.push_back(glm::vec4(1.0f, 0.0f, 0.0f, 1.0f)); // red
 vertexColors.push_back(glm::vec4(0.0f, 1.0f, 0.0f, 1.0f)); // green
 vertexColors.push_back(glm::vec4(0.0f, 0.0f, 1.0f, 1.0f)); // blue
 vertexPositions.push_back(glm::vec4(-0.75f, -0.75f, 0.0f, 1.0f));
 vertexPositions.push_back(glm::vec4(0.75f, -0.75f, 0.0f, 1.0f));
 vertexPositions.push_back(glm::vec4(0.75f, 0.75f, 0.0f, 1.0f));


 // VAO
 glGenVertexArrays(1, &vao);
 glBindVertexArray(vao);


 // VBO
 glGenBuffers(2, &vbo[0]);
 // vertex position
 glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
 //glBufferData(GL_ARRAY_BUFFER, 12*sizeof(GLfloat), vertexPosition, GL_STATIC_DRAW);
 glBufferData(GL_ARRAY_BUFFER, 3*sizeof(glm::vec4), &vertexPositions[0], GL_STATIC_DRAW);
 glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
 glEnableVertexAttribArray(0);
 // vertex color
 glBindBuffer(GL_ARRAY_BUFFER, vbo[1]);
 //glBufferData(GL_ARRAY_BUFFER, 12*sizeof(GLfloat), vertexColor, GL_STATIC_DRAW);
 glBufferData(GL_ARRAY_BUFFER, 3*sizeof(glm::vec4), &vertexColors[0], GL_STATIC_DRAW);
 glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 0, 0);
 glEnableVertexAttribArray(1);


 glBindVertexArray(0);
}