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 |