GLUT_SINGLE -> 싱글 버퍼를 이용

-> glDisplay의 끝이 glFlush();

 

glReshape -> 스케치북 사이즈 조절

glLoadIdentity() -> 행렬의 초기화

gluOrtho2D -> 화면의 크기 조절

-> 윈도우 크기를 조절하지 않는 이유 -> 윈도우는 화면의 크기다. (윈도우가 100인데 엑터가 1000이면 윈도우를 1000으로 설정하긴 어렵다) -> 스케치북의 크기를 1000으로하면 엑터가 100크기의 윈도우 창 안에서 다 보인다.

 

glDisplay -> 화면에 그림

 

Windows.h 를 include 하는 이유 -> exit(0)을 사용하기 위해

 

별을 그리고 싶으면 -> 삼각형 5개, 오각형 1개를 따로 그린다.

 

glBegin으로 열고 glEnd로 닫는다.

glLinewidth를 사용해서 라인의 굵기를 바꿨으면 다 쓰고 End할때 1.0f로 초기화한다.

 

glShaeModel(GL_SMOOTH); 부드럽게 색이 섞임

glShaeModel(GL_FLAT); 마지막 색을 기준으로 색칠

//glShadeModel사용
#include <windows.h>
#include <glut.h>
#include <math.h>

#define PI 3.141592

void glReshape(int w, int h)
{
	glLoadIdentity();
	glViewport(0, 0, w, h);
}

void glDisplay(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glPointSize(5.0f);
	glShadeModel(GL_SMOOTH);
	glBegin(GL_LINES);
	glColor3f(1.0f, 0.0f, 0.0f);
	glVertex3f(-1.0f, 0.0f, 0.0f);
	glColor3f(0.0f, 0.0f, 1.0f);
	glVertex3f(1.0f, 0.0f, 0.0f);
	glEnd();
	glPointSize(1.0f);
	glFlush();
}

int main()
{
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowPosition(50, 100);
	glutInitWindowSize(300, 300);
	glutCreateWindow("OpenGL");
	glutReshapeFunc(glReshape);
	glutDisplayFunc(glDisplay);
	glutMainLoop();
	return 0;
}
//무지개 색 표현
#include <windows.h>
#include <glut.h>
#include <math.h>

#define PI 3.141592

void glReshape(int w, int h)
{
	glLoadIdentity();
	glViewport(0, 0, w, h);
}

void glDisplay(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glPointSize(5.0f);
	glShadeModel(GL_SMOOTH);
	glBegin(GL_TRIANGLES);
	glColor3f(1.0f, 0.0f, 0.0f);
	glVertex3f(-0.8f, -0.8f, 0.0f);
	glColor3f(0.0f, 1.0f, 0.0f);
	glVertex3f(0.8f, -0.8f, 0.0f);
	glColor3f(0.0f, 0.0f, 1.0f);
	glVertex3f(0.0f, 0.8f, 0.0f);
	glEnd();
	glPointSize(1.0f);
	glFlush();
}

int main()
{
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowPosition(50, 100);
	glutInitWindowSize(300, 300);
	glutCreateWindow("OpenGL");
	glutReshapeFunc(glReshape);
	glutDisplayFunc(glDisplay);
	glutMainLoop();
	return 0;
}
//원 그리기
#include <windows.h>
#include <glut.h>
#include <math.h>

#define PI 3.141592

void glReshape(int w, int h)
{
	glLoadIdentity();
	glViewport(0, 0, w, h);
}

void glDisplay(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glPointSize(5.0f);
	glColor3f(1.0f, 0.0f, 0.0f);
	glBegin(GL_POINTS);
	for (double angle = 0.0; angle <= PI * 2.0; angle += PI / 10.0)
	{
		glVertex3f(0.5 * cos(angle), 0.5 * sin(angle), 0.0f);
	}
	glEnd();
	glPointSize(1.0f);
	glFlush();
}

int main()
{
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowPosition(50, 100);
	glutInitWindowSize(300, 300);
	glutCreateWindow("OpenGL");
	glutReshapeFunc(glReshape);
	glutDisplayFunc(glDisplay);
	glutMainLoop();
	return 0;
}

싱글 버퍼와 더블 버퍼와의 차이

glFlush vs glutSwapBuffers

싱글 버퍼 : default -> 읽거나 그리는 작업에 대하여 하나씩 진행

더블 버퍼 : 동시에 진행 가능 (추천)

 

스칼라 - 사이즈, 길이 (크기)

벡터 - 스칼라 + 방향

 

내적 -> 스칼라값이 나온다.

u(내적)v => ux*vx+uy*vy+uz*vz=u*v*cos각도

외적 -> 벡터값이 나온다.

w=u*v = ((uy*vz-uz*vy),(uz*vx-ux*vz),(ux*vy-uv*vx))

-> u벡터와 v벡터와의 수직인 벡터가 결과로 나옴

-> 방향의 순선에 따라서 위로향할지 아래로향할지 알수도있다.

 

행렬

1. 4x4 -> row==column : 정방행렬

2. 4x1 -> row만 있음 row vector

3. 1*3 -> column만 있음 column vector

 

A(T)->전치행렬

MxN -> N*M

 

대각행렬만 1인경우 -> 단위행렬 I

I*M = M*I = M

레포트

1. 클래스 형태로 제작3

벡터 - 더하기, 빼기, 내적, 외적

행렬 - 더하기 ,빼기, 곱하기, 전치

Input.txt와 Output.txt를 제작하여 활용

'학교수업' 카테고리의 다른 글

윈도우즈프로그래밍 4주차  (0) 2022.04.01
컴퓨터구조 4주차  (0) 2022.04.01
인공지능개론 4주차  (0) 2022.03.30
게임공학개론 4주차  (0) 2022.03.28
UNIX 3주차  (0) 2022.03.27

+ Recent posts