All posts by kpark

Lab3

3/28까지 Lab3 – 본인의 도형 1개 그려오기 (Triangle 에서 시작한다. 적어도 10개 이상 정점을 사용할 것).
본인이 그린 도형에 키보드와 마우스를 이용하여 색깔과 움직임을 넣어본다.
 키보드 ‘q’ 또는 ‘Q’ 버튼을 누르면, 프로그램이 종료한다.
 키보드 SPACEBAR 버튼을 누르면, 도형이 바뀌도록 한다.
 본인이 구상해온 꽃, 별, 나무, 등등의 도형을 그린다.
 키보드 ‘r’ ‘g’ ‘b’ 키를 누르면 RGB 색깔을 바꿔본다.
 마우스를 드래그할 때, 도형이 마우스를 따라다니도록 한다.

Triangle Geometry

사용자 삽입 이미지
void Triangle::init()
{
 glm::vec3 t1 = p + v1;
 glm::vec3 t2 = p + v2;
 glm::vec3 t3 = p + v3;

 // face 1
 vbo.addData(&t1[0], sizeof(glm::vec3)); // vertex position
 vbo.addData(&color[0], sizeof(glm::vec3)); // vertex color
 vbo.addData(&t2[0], sizeof(glm::vec3));
 vbo.addData(&color[0], sizeof(glm::vec3));
 vbo.addData(&t3[0], sizeof(glm::vec3));
 vbo.addData(&color[0], sizeof(glm::vec3));

 numVertices = 3;

 // VAO & VBOs
 vbo.createVBO();
 vbo.bindVBO();
 vbo.uploadDataToGPU(GL_STATIC_DRAW);

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

 int iDataStride = 2 * sizeof(glm::vec3); // vertex & color only
 int iDataOffset = 0;
 glEnableVertexAttribArray(0);
 glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, iDataStride, (void*)iDataOffset);
 iDataOffset += sizeof(glm::vec3);
 glEnableVertexAttribArray(1);
 glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, iDataStride, (void*)iDataOffset);

 isLoaded = true;
}