컴퓨터그래픽스 과제. 아니....명색이 OpenGL을 배우면 3D로 뭔가 멋진걸 만들어오라고 하시지.... 왠 점찍고 선 그리고 도형 그리기냐고 -_-;; 별것도 아닌데 개고생 했다;; 관건은 역시나 창 크기가 변화했을 때의 좌표 처리. 그 외에는 순조롭게 풀렸고, 점찍기 구현 다 하고 나니 선 그리기와 도형 그리기는 5분만에 해결됐다. 소스는 첨부해놨으니 베끼고싶으면 베끼고 참고하고싶으면 참고하시길. 아래 그림은 그냥 허전해서 올려놓은것이니까 참고하시고, 그림이 잘 안보이면 클릭해서 보시길;
메인화면. 오른쪽버튼을 누르면 점찍기, 선그리기, 도형그리기 메뉴가 나온다.
점찍기 모드. 별다른거 없다. 그냥 점 찍는다.
선 그리기. 이것도 그냥 선 그린다.
도형그리기. 이것도 물론 도형만 그린다. 원, 사각형 이딴걸 그리는게 아니라 점 찍히는대로 따라가서 그리는거다.
#include <glut.h>
#include <gl.h>
#include <glu.h>
#include <stdio.h>
#define NUMBER_OF_POINT1000// 그릴 수 있는 총 점의 갯수
enum __shape// 그릴 도형의 종류를 지정하는 Enumerator
{
POINT = 1,
LINE = 2,
POLYGON = 3
}Shape;
GLfloat myVertices[NUMBER_OF_POINT][2];// 그려질 점의 위치를 저장하는 배열
GLfloat currentWidth = 640.0;// 현재의 창 크기를 저장하는 변수
GLfloat currentHeight = 480.0;
GLfloat initWidth = 640.0;// 처음 창 크기를 저장하는 변수
GLfloat initHeight = 480.0;
GLint count = 0;// 전체 점의 갯수를 저장하는 변수
void MyDisplay()
{
GLint index;
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1, 0, 0);// 그려지는 객체의 색상, 여기서는 R 값만 1이므로 붉은색
glPointSize(3.0f);// 그려지는 점의 크기
glEnableClientState(GL_VERTEX_ARRAY);// 배열을 사용 가능하도록 함